FPGA实验报告_第1页
FPGA实验报告_第2页
FPGA实验报告_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电气技术实践可编程逻辑器件 FPGA 应用开发实验报告2021年 12 月目录 一、实验目的二、实验要求三、实验内容四、实验代码及实验结果(1) 4 位二进制加法计数器(2) 半加器(3) LED静态显示(4) 38 译码器( 5)点阵扫描显示( 6)步进电机状态机五、实验感想六、学习并使用FPGA的心得与体会七、电气技术实践总结一、实验目的1、熟悉使用可编程逻辑器件 (Altera 公司FPGA Cyclone系列EP1C6Q。2、熟悉使用硬件描述语言 VHDL。4、熟悉使用核心目标系统板与接口电路等工作原理及其功能模块绑定信息。5、熟悉并掌握下载线方式和下载文件的选择。二、实验要求1、学习

2、并掌握文本、图形等输入和时序、功能仿真方法。2、学习并熟悉门电路、组合电路、时序电路等单一模块功能。3、学习并设计各种不同状态机逻辑功能。4、学习并设计由单一模块t较多功能模块集成t系统集成方法。5、学习并选择多种模式显示 发光二极管显示、米字型数码管显示、七段数码管t动 态扫描或静态扫描显示、LED点阵显示各种字符和图形或静止或移动等方式、LCD晶显示各种字符和图形或静止或移动等方式 。6、根据自已的兴趣和愿望,可从以下给定的实验目录中选取或自已设定功能题目。7、实验数目没有要求,关键是看质量,是否是自已编写、调试、实现。三、实验内容1、 按指导书集成开发环境章节操作实现文本编程实例1 和图

3、形编程实例 2全过程。2、任选门电路、组合电路、时序电路实验各完成一个其逻辑功能,其实现方案自已规定。在进行FPGA目标器件输入和输出引脚绑定时,输入引脚绑定高/低电平、单脉冲、各种分频连续脉冲等多种信号,输出引脚可绑定发光二极管、七段数码管、LED点阵等显示模式。3、在完成 1位十进制计数器的根底上,可增加完成 2或 3等多位十进制计数器逻辑功 能并用多位七段数码管来显示。4、根据状态机工作特点,设计一个有一定功能效果的例程。5、利用 4X4 键盘设计显示对应的键字符信息。6、用LED点阵显示任意字符、图形信息。四、实验代码及实验结果1)4 位二进制加法计数器【实验代码】library ie

4、ee;use count4 isport(clk,d:in std_logic;rst:in std_logic;q:out std_logic_vector(3 downto 0);end entity count4;architecture bhv of count4 issignal q1:std_logic_vector(3 downto 0);beginprocess(rst,clk,d)beginif(rst='0')thenq1<="0000"elsif(clk'event and clk = '1')thenq1

5、<=q1+1;end if;end process;q<=q1;end architecture bhv;【实验操作】输入信号elk时钟t Pin 152 ; rst清零Pin1 ; d启动控制宀Pin2 ;输出信号q3 Pin43 ; q2红色开关组左边开始第一个和第二个,显示位置在实验箱左上角第一、 二、三、四个发光二 极管输入信号rst、d都为“ 1、 SW7旋转到1Hz,输出结果信息为第一、二、三、四个发光 二极管按照0000t0001t 1111循环显示,符合实验要求。2半加器【实验原理图】【实验操作】逻辑分析:输入信号a、b;输出信号分别为sum 和、carry 进位。

6、逻辑方程:sum=a® b; carry=a * b.接口信号与目标器件引脚连接:输入信号pin_nametPin1、pin_name2f Pin2 ;输出信号 pin_name4 和t Pin44、pin_name3 进位t Pin43.可观察到通过输入得到的逻辑输出与上述的逻辑方程相符,符合半加器的逻辑要求。3LED静态显示【实验代码】library ieee;use dec7s1 isportA:in std_logic_vector3 downto 0; LED7S:out std_logic_vector6 downto 0; end;architecture onr of

7、 dec7s1 is beginprocess(A) begi ncase A iswhe n"0000"=>LED7S<二"1111110"whe n "0001"=>LED7S<二"0110000" whe n"0010" => LED7S<="1101101" whe n"0011" => LED7S<二"1111001" whe n "0100" => L

8、ED7S<="0110011" whe n "0101" => LED7SV二"1011011" when "0110" => LED7S<="1011111"whe n "0111" => LED7S<="1110000" whe n "1000" => LED7S<="1111111" whe n"1001" => LED7S<=&q

9、uot;1111011" whe nothers => n ull;end case;end process;end;【实验操作】用开关A3, A2 , A1, A0作为输入设置,组成一个高输入有效的 根本组合逻辑器;从输出指示LED7S观察到数字随A3, A2,A1, A0 设置值的变化而引起的相应变化。(4) 38译码器A3 A2 Al A0a b c d e f g0 0 0 01 1 I 1 1 1 00 0 0 10 110 0 0 000 L 0I 1 t> 1 1 0 10 0 1 111110 0 10 1 0 &0 110 0 11Q 1 0 1

10、10 110 1:0 110I 0 1 1 1 1 1真值表如下图:实验代码】library ieee;use encoder isport(a,b,c:in std_logic;y:out std_logic_vector(7 downto 0);end;architecture one of encoder issignal temp:std_logic_vector(2 downto 0);signal tt:std_logic_vector(7 downto 0);begintemp<=c&b&a;process(temp)begincase temp iswhe

11、n "000" =>tt<="00000001"when "001" =>tt<="00000010"whe n "010" =>tt<二"00000100"when "011" =>tt<二"00001000"when "100" =>tt<="00010000"when "101" =>tt<=&quo

12、t;00100000"when "110" =>tt<="01000000"end case;end process;y<=tt;end one;【实验操作】三个拨码开关确定输入,由八个 LED的亮暗完成译码显示与真值表相同:输入端输出端A1A2A3Y0Y1Y2Y3Y4Y5Y6Y70001000000000101000000010001000000110001000010000001000101000001001100000001011100000001(5)点阵扫描显示【实验代码】library IEEE;use count

13、4 isport (clk,d:in std_logic;-in bit;rst: in std_logic;q:out std_logic_vector(3 dow nto 0);p:out std_logic_vector(7 dow nto 0); m:out std_logic_vector(7 dow nto 0);end en tity coun t4;architecture jsq of count4 issig nal q1:std_logic_vector(3 dow nto 0);sig nal p1:std_logic_vector(7 dow nto 0);sig n

14、al p2:std_logic_vector(7 dow nto 0);begi nprocess(rst,clk)begi np1<="00000000"p2<="00000000"if(clk'event and clk='1') thenif(rst='0')thenq1<="0000"else if(d='1')thenif(q1="1111")thenq1<="0000"elseq1<=q1+'

15、;1'end if;end if;end if;end if;q<=q1;case q1 isend case;end process;end architecture jsq;【实验现象】可观察到点阵的一个亮行随时钟脉冲从上往下扫描,并周期循环。(6)步进电机状态机【实验原理】【实验代码】library ieee;use state_stepper_b isport(clk,dir:in std_logic;q:out std_logic_vector(3 downto 0);end state_stepper_b;architecture arc of state_stepp

16、er_b istype state_type is (s0,s1,s2,s3);-定义状态机的四个状态signal state:state_type;beginprocess( clk)beginif (clk'event AND clk='1') thenif (dir='1')then-正转时处理如下state<=s0;case state iswhen s0=> state<=s1;when s1=> state<=s2;when s2=> state<=s3;when s3=> state<=

17、s0;end case;else - 反转时处理如下state<=s3;case state iswhen s3=> state<=s2;when s2=> state<=s1;when s1=> state<=s0;when s0=> state<=s3;end case;end if;end if;end process;with state select-各状态对应的二进制数码q <= "0001" when s0,"0010" when s1,"0100" when

18、s2,"1000" when s3,"0000" when others;end arc;【实验现象】输入信号:时钟elk接10Hz输入SW7 P152;方向dir接拨动开关101 拨码开 关 SW3左 1 P1 ;输出信号:4位输出信号接LED模块025- 028 P43P46;实验操作下载程序,将SW7拨至第二段10Hz,此时,LED灯的前1位会有 规律的闪烁。改变方向开关的电平信号,指示灯的移动方向立即改变。五实验感想在数字电路的课程学习中, 我们了解到, FPGA 是 FieldProgrammable Gate Array 现场可编程门阵列的缩

19、写,它是在PALGAL、PLD 等可编程器件的根底上进一步开展的产物,是专用集成电 路ASIC中集成度最高的一种。通过在电气实践中实际操作 FPGA式验箱,亲自下载程序并观察 实验现象,我更加认识到,FPGA作为专用集成电路领域中的一种半 定制电路, 既解决了定制电路的缺乏, 又克服了原有可编程器件门电 路数有限的缺点。可以认为FPGA能完成任何数字器件的功能,上至 高性能CPU下至简单的74、40系列等集成电路。FPGA内部由门电 路和触发器以及系统时钟等阵列构成。我们可以通过原理图输入或硬件描述语言或混合编写方式任意、 自由地设计一个数字系统, 对设计方案进行时序仿真和功能仿真, 来 验证

20、设计的正确性。 尽管初次使用时有些苦难, 特别是引脚不知如何 连接。但通过实验例程的引导,就能迅速摸索出引脚的连接方法。FPGA可以应用到许多方面,通过搭载不同的内核,可以应用到 不同系统中,完成多种任务设计。由此可见,对于相关专业的学习与 工作来说,学好FPG A学会运用它丰富的功能,是十分有必要的。 短暂的课程之余,我们更应当加深对 FPGA勺学习与了解。六、学习并使用编程逻辑器件 FPGA勺心得和体会在数字电路理论课程的学习中, 在第八章里, 我们了解了可编程 逻辑器件的相关知识。从中,我对现在非常流行的FPGA产生过浓厚的兴趣,却遗憾于无法见识其庐山真面目。所以非常有幸,在本学期 电气

21、实践课程的最后,自己能够亲身体验简单设计的完整流程,对 FPGA的认识不再仅局限于严谨却苍白的理论,而是真正地自己去实 现了些以前要花很多精力连庞杂的线才能实现的功能, 确实觉得收获 良多。简明地讲, F P GA( Field Programmable Gate Array ),即现场可编 程门阵列,它是在PAL GAL CPLD等可编程器件的根底上进一步发 展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路 而出现的, 其出现既解决了定制电路的缺乏, 又克服了原有可编程器 件门电路数有限的缺点,一经面世,就很快风行整个行业。而通过动手实验,我对于 FPGA勺工作原理,也有了较

22、之前更清楚明 白的理解。它采用了逻辑单元阵列 LCA ( Logic Cell Array )这样一 个概念,内部包括可配置逻辑模块 CL (B Configurable Logic Block ) 、 输入输出模块 IO(B Input Output Block )和内部连线( Interconnect ) 三个局部。 现场可编程门阵列(FPGA是可编程器件,与传统逻辑 电路和门阵列(如PAL GAL及CPLD器件)相比,FPGA具有不同的 结构。FPGA利用小型查找表(16X1RAM来实现组合逻辑,每个查 找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或 驱动 I/O ,由此构

23、成了既可实现组合逻辑功能又可实现时序逻辑功能 的根本逻辑单元模块,这些模块间利用金属连线互相连接或连接到 I/O模块。FPGA勺逻辑是通过向内部静态存储单元加载编程数据来实 现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模 块之间或模块与I/O间的联接方式,并最终决定了 FPGA所能实现的 功能,FPGA允许无限次的编程。而通过这两次的亲手操作FPGA实验,我真切感受到了它的神奇魅力。 首先要说的是, 本学期数字电路实验相较于上学期模拟电路的实验而 言,调试局部很少, 大局部都是保证连线正确就可以保证现象的产生 以及功能上的实现。 然而不得不成认的是, 其连线的复杂程度经常让 人瞠目结舌,而我们涉及的实验局部还仅仅是数字电路中比拟简单的 内容,实践设计电路中, 这种单独芯片罗列的方式也显然不能满足当 今用户需求, 总让人觉得现在做的实验似乎并不适用于实际操作, 所 以,FPGA的实验让我体验到了比拟靠近当前真实电路的设计方式, 也初步掌握了 QUARTUSI集成开发环境的根本操作。具体的讲, 在本学期前面所做的实验中有一个电子顺序锁的实验, 连 线、各模块联合起来的调试都极为复杂, 可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论