资源描述:
《FPGA实验报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
南京理工大学泰州科技学院FPGA系统设计实验报告教材名称:FPGA系统设计与应用开发指导教师:周莉莉实验室:4401学院(系):电子电气工程学院专业班级:10电信(1)班姓名:周根生朱守超学号:10020401491002040150实验学期:2013-2014学年第一学期总评成绩:教师签字:南京理工大学泰州科技学院FPGA系统设计实验报告
1目录实验一Max+plusII原理图设计输入..............1实验二简单逻辑电路设计与仿真.................6实验三组合逻辑电路设计(一).................11实验四组合逻辑电路设计(二).................16实验五有限状态机的设计.......................26实验六数字频率计............................32
2南京理工大学泰州科技学院FPGA系统设计实验报告学号:1002040149课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超1002040150指导教师:周莉莉实验日期:实验题目:Max+plusII原理图设计输入成绩:一、设计任务采用原理图设计输入法,设计一个具有四舍五入功能的电路,其输入为4位二进制数,要求输入大于或等于0101时,电路输出为高电平,小于0101时电路输出为低电平。二、设计过程根据设计要求列出四舍五入的真值表,如图1.1所示。图1.1四舍五入真值表由图1.1可得化简的表达式为OUT=A+BD+BC,由逻辑表达式可知,要设计的电路图有四个输入端(A,B,C,D)和一个输出端OUT,整个电路由两个2输入端的与门和一个3输入的或门组成。启动MAX+plusII,新建GraphicEditorfile文件,后缀为.gdf。在编辑界面空白处双击左键,出现输入元件对话框如图1.2所示,在SymbolName栏中直接输入元件的符号名OK,输入端(input),输出端(output),连接电路如图1.3所示。1
3图1.2操作图1.3原理图芯片型号选择单击Assign,选择Device,如图1.4所示。2
4图1.4型号引脚命名双击PIN_NAME,使其变黑后输入引脚名,并保存文件然后编译,如图1.5所示。图1.5编译编译后,进行波形仿真如图1.6所示,在空白处右键,添加EnterNodefromSNF,图1.7所示。图1.6新建波形图3
5图1.7步骤波形列出如图1.8所示,然后进行编译无误后可以修改引脚。图1.8波形图修改引脚如图所示图1.9所示。图1.9引脚图分配4
6修改引脚后将接线联入到试验箱,进行下载仿真。当拨动开关为0100时,输出的为灭即为0,但是当拨动到0101时,输出为亮即为1符合四舍五入的程序。三、总结这个实验锻炼了我们对电路测试的动手能力。对四舍五入电路测试时可以用四个拨码开关设置输入数据,输出端接发光二极管,若输出为高电平时发光二极管亮,则输出为低电平时发光二极管不亮,只要输入小于5,输出为低电平,大于等于5时输出为高电平。则这个设计是合理的。5
7南京理工大学泰州科技学院FPGA系统设计实验报告课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:10020401491002040150指导教师:周莉莉实验日期:实验题目:简单逻辑电路设计与仿真成绩:一、设计任务1、学习并掌握MAX+PLUSⅡCPLD开发系统的基本操作。2、学习在MAX+PLUSⅡ下设计简单逻辑电路与功能仿真方法。分别用行为描述方式、数据流描述方式、结构化描述方式设计一位二进制的半加器。二、设计过程一位二进制加法计数器设计与仿真1、开机,进入MAX+PLUSⅡ开发系统。2、在工具条中选择新建文件,弹出NEW界面,在该界面中选择TextEditFile项,然后点击OK,进入文本编辑状态。然后点击工具条中的保存按钮,在弹出的SaveAs界面中选择后缀.VHD,并为当前的实验选择恰当的路径并创建项目名称。3、编辑输入相应的程序代码。4、在File菜单中选Project项,选择其中的SetProjecttoCurrentFile,将项目设置为当前文件。然后保存当前文件。5、选择器件。点击Assign菜单的Device项,在弹出的Device界面中选择ACEX1K系列的EP1K10TC100-3。注意界面中的ShowOnlyFastestSpeedGrades不要选中,否则显示不出该器件。6、点击MAX+PlusII菜单下的Compiler进行编译,然后点击START按钮开始编译。对编译的结果进行观察,如果出现错误或告警,检查输入的源代码排除语法错误并重新编译,重复此过程直到编译通过。7、点击MAX+PLUSⅡ菜单下的WaveformEditor子菜单出现WaveformEditor窗口。点击鼠标右键,选择EnterNodesFromSNF子菜单,在EnterNodesFromSNF对话框中点击List按钮、“=>”按钮和Ok按钮,填入电路节点名称。8、在时钟输入端CLK处设置好方波脉冲,点击MAX+PLUSⅡ菜单下的Simulater子菜单,进行波形仿真以验证电路的逻辑功能。9、硬件下载操作。(按任务要求以及设计步骤写出程序代码或原理图、管脚分配情况、电路生成符号、仿真波形图等,以上步骤需要配图说明;说明下载到硬件实验箱中调试情况)(1)编写程序行为描述方式如图2.1所示。6
8图2.1行为描述法波形图如图2.2所示图2.2波形图修改管脚如图所示图2.3所示。图2.3改管脚(2)编写程序数据流描述方式如图2.4所示。图2.4数据流描述方式7
9其波形图如图2.5所示。图2.5波形图更改管脚如图2.6所示。图2.6改管脚(3)结构化描述方式如图2.7所示。8
10And-gateXor-gate图2.7结构化描述其波形图如图2.8所示。图2.8波形图其引脚修改如图2.9所示。图2.9改引脚其电路生成符号为如图2.10所示。9
11图2.10电路生成符号通过将程序下载到实验箱上时我们可以将其连接到拨码开关中,将a,b,s,c连入对应的开关可以看到,当拨码为ab00时cs为00灭,ab01时cs为01,ab10时cs为01,ab为11是cs为10。三、总结这个实验锻炼了我们编程和实际动手能力。行为描述设计目标行为抽象程度高,程序编写简单,适用于大型的,复杂的模块型的设计项目。数据流方式电路中的逻辑关系明了,适用于小型电路的设计项目。结构化描述方式电路结构尤其是模块化结构清楚,可以用于模块化层次化设计中。10
12南京理工大学泰州科技学院FPGA系统设计实验报告课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:10020401491002040150指导教师:周莉莉实验日期:实验题目:组合逻辑电路设计(一)成绩:一、设计任务四舍五入判别电路1、简单信号赋值语句;2、条件信号赋值语句;自行画出真值表,求出逻辑表达式,写出对应程序,并仿真、下载验证三态门电路的实现使用IF语句完成三态门的设计。在数字电路中,三态门电路是在普通门电路的基础上附加控制电路构成的。顾名思义,三态门电路不但具有逻辑值0和逻辑值1,而且还具有高阻态输出的第三种状态(或称禁止态)。三态门主要用于可编程逻辑器件管脚的双向口设置,在后续实验中会涉及。三态门电路的逻辑电路图3.1。根据三态门的逻辑电路图和真值表,不难看出三态门电路的基本工作原理是:当控制端口的输入使能信号EN=‘1’,那么直接将输入端口的数据送到输出端口上;当控制端口的输入使能信号EN=‘0’,那么这时输出端口呈高阻状态。如表3.1所示。图3.1三态门表3.1三态门真值表二、设计过程如图所示其真值表为图3.2所示。11
13图3.2真值表用简单信号赋值语句进行描述的程序如图3.3所示。图3.3简单信号赋值语句程序用条件信号赋值语句进行描述的程序如图3.4所示。图3.4条件信号赋值语句程序用其进行波形仿真如图3.5所示。12
14图3.5波形图修改其引脚图如图3.6所示。图3.6修改引脚图完成好后电路生成的符号如图3.7所示。图3.7电路生成符号将其下载到实验箱上时,可以观察其变化。当输入信号大于等于5时,输出信号为1,当输入信号小于5时,输出信号为0。三态门电路的实现其程序如图3.8所示。13
15图3.8三态门程序其进行仿真可以得出其波形图如图3.9所示。图3.9三态门波形图更改其管脚如图3.10所示。图3.10改管脚其电路生成符号如图3.11所示图3.11电路生成符号14
16三、总结在上面的四舍五入的两种程序中,结构体中用了条件赋值语句,虽然条件赋值语句比简单赋值语句复杂,但是条件赋值的设计过程比简单赋值简单,条件赋值中可以不列真值表,不必求逻辑方程,用行为描述方式以条件信号赋值语句来实现,使设计简单,更加明了。15
17南京理工大学泰州科技学院FPGA系统设计实验报告课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:10020401491002040150指导教师:周莉莉实验日期:实验题目:组合逻辑电路设计(二)成绩:一、设计任务1、加法计数器的实现;2、七段数码显示译码器的设计;3、数码管动态扫描电路;4、八位数码扫描显示电路的设计。二、设计过程1.加法计数器的实现加法计数器的动作是,每次时钟脉冲信号clk为上升沿时,计数器会将计数值加1。以图4.1为例,它是2bits的计数器,所以计数值(由Q1Q0组成),依次是0,1,2,3,0,1,,周而复始。图4.1二位加法计数器电路符号及相关波形步骤:1、新建一个VHDL文本文件;2、VHDL程序输入用VHDL设计一个四位十进制加法计数器,要求具有异步清零端CLR、使能端EN、时钟输入端CLK、计数输出段Q[3..0]、进位输出端C,数据类型std_logic。实体名:counter。3、对源程序进行语法检查和编译;4、波形仿真;其新建的程序如图下所示LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;16
18USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYcounterISPORT(clk,en,clr:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);c:OUTSTD_LOGIC);ENDcounter;ARCHITECTUREoneOFcounterISSIGNALQOUT:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk,en,clr)BEGINIF(CLR='0')THENQOUT<="0000";ELSIF(clk'eventandclk='1')THENIF(en='1')THENIFQOUT=9THENQOUT<="0000";c<='1';ELSEQOUT<=QOUT+1;c<='0';ENDIF;ENDIF;ENDIF;ENDPROCESS;q<=QOUT;ENDONE;其波形图如图4.2所示。图4.2波形图其电路生成符号如图4.3所示。17
19图4.3电路生成符号2.七段数码显示译码器的设计7段数码是纯组合电路,通常的小规模专用IC。下面作为7段BCD码译码器,输出信号LED7S的7位分别接如图2数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。注意:这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h。设计该译码器的必须条件,首先是要列出输入码与输出码之间的对应关系,即真值表。如图表4.1所示。输入码输出码(共阴极)字型A3A2A1A0gfedcba00000111111000010000110100101011011200111001111301001100110401011101101501101111101601110000111710001111111810011101111910101110111A10111111100B11000111001C11011011110D11101111001E11111110001F表4.1真值表步骤:1、新建一个VHDL文本文件;18
202、VHDL程序输入实体名:DECL;输入端口为d,数据类型为std_logic_vector(3downto0);输出端口为seg,数据类型为std_logic_vector(6downto0)。用case语句编写七段显示器译码程序,显示从0-F。(试考虑是否可用其他语句编写该程序,如选择信号赋值语句等);3、对源程序进行语法检查和编译;4、波形仿真,用总线的方式给出输出信号的仿真波形;5、管脚锁定;6、硬件下载。新建程序如下所示USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECLISPORT(d:INSTD_LOGIC_VECTOR(3DOWNTO0);seg:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneofDECLISBEGINPROCESS(d)BEGINCASEdISWHEN"0000"=>seg<="0111111";WHEN"0001"=>seg<="0000110";WHEN"0010"=>seg<="1011011";WHEN"0011"=>seg<="1001111";WHEN"0100"=>seg<="1100110";WHEN"0101"=>seg<="1101101";WHEN"0110"=>seg<="1111101";WHEN"0111"=>seg<="0000111";WHEN"1000"=>seg<="1111111";WHEN"1001"=>seg<="1101111";WHEN"1010"=>seg<="1110111";WHEN"1011"=>seg<="1111100";WHEN"1100"=>seg<="0111001";WHEN"1101"=>seg<="1011110";WHEN"1110"=>seg<="1111001";WHEN"1111"=>seg<="1110001";WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDone;其波形仿真如图4.4所示。19
21图4.4波形图更改其管脚如图4.5所示。图4.5改管脚其电路生成符号如图4.6所示。图4.6电路生成符号将程序下载到实验箱上时我们可以看到当通过拨码开关拨到0-f的对应值时会在数码管上显示对应的数字或字母。20
223.数码管动态扫描显示电路如图所示,是一个8位数码扫描显示电路,其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都连在一起,8个数码管分别有8个选通信号k1-k8来选择。被选通的数码管显示数据。例如,在某个时刻k3是高电平,其中选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其他7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1-k8分别被单独选通,于此同时,在段信号输入口加上希望在该对应数码管上显示的目的。图4.78位数码扫描显示电路本实验中,段选线占用一个8位I/O口,位选线占用一个三位I/O口,由于各位的段选线并联,段线码的输出对各位来说都是相同的。而同一时刻,某一位的位选线处于选通状态时,其它各位的位选线处于关闭状态,即8位LED中只有选通的那一位显示出字符,而其它位则是熄灭的。若要各位LED显示相同的字符,就必须采用扫描显示方式。某一时刻选通其中的一位,在下一时刻,只让下一位的位选线处于选通状态,而其他的位选线处于关闭状态。如此循环下去,当显示间隔足够短,由于人眼有视觉暂留现象,则可造成多位同时亮的假象,达到各位“同时”显示出字符的目的。这种扫描方式称为数码管动态扫描方式。步骤:1、新建一个VHDL文本文件;2、VHDL程序输入,在练习二七段数码显示译码器的的基础上,对程序稍作改造,设计出一个能够让8位数码管同时显示同一字符的显示电路。实体名:SCAN。3、对源程序进行语法检查和编译;4、波形仿真;5、管脚锁定;新建的程序如下面所示USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCANISPORT(d:INSTD_LOGIC_VECTOR(3DOWNTO0);clk:INSTD_LOGIC;SEL:OUTSTD_LOGIC_VECTOR(2DOWNTO0);seg:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneofSCANISSIGNALtemp:STD_LOGIC_VECTOR(2DOWNTO0);BEGINP1:PROCESS(clk)begin21
23if(clk'eventandclk='1')thentemp<=temp+1;endif;endprocess;sel<=temp;P2:process(d)beginCASEdISWHEN"0000"=>seg<="0111111";WHEN"0001"=>seg<="0000110";WHEN"0010"=>seg<="1011011";WHEN"0011"=>seg<="1001111";WHEN"0100"=>seg<="1100110";WHEN"0101"=>seg<="1101101";WHEN"0110"=>seg<="1111101";WHEN"0111"=>seg<="0000111";WHEN"1000"=>seg<="1111111";WHEN"1001"=>seg<="1101111";WHEN"1010"=>seg<="1110111";WHEN"1011"=>seg<="1111100";WHEN"1100"=>seg<="0111001";WHEN"1101"=>seg<="1011110";WHEN"1110"=>seg<="1111001";WHEN"1111"=>seg<="1110001";WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDone;其波形仿真如图4.8所示。图4.8波形图其更改管脚如图4.9所示。22
24图4.9改管脚其电路生成符号如图4.10所示。图4.10电路生成符号4.八位数码扫描显示电路的设计在练习三数码管动态扫描的基础上,利用三位计数器,对8位数码管进行选通扫描,在8个数码管上显示数据:13579BDF;步骤:1、新建一个VHDL文本文件;2、VHDL程序输入;实体名:SCAN_LED。3、对源程序进行语法检查和编译;4、波形仿真;5、管脚锁定;6、硬件下载。新建程序如下面所示LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYscan_ledISPORT(clk:INSTD_LOGIC;sel:OUTSTD_LOGIC_VECTOR(2DOWNTO0);daout:OUTSTD_LOGIC_VECTOR(6DOWNTO0));23
25END;ARCHITECTUREoneOFscan_ledISSIGNALse:STD_LOGIC_VECTOR(2DOWNTO0);BEGINsel<=se;PROCESS(clk,se)BEGINIF(clk'EVENTandclk='1')THENIFse="111"thendaout<="0000110";se<="000";ELSEse<=se+1;CASEseISWHEN"000"=>daout<="1001111";WHEN"001"=>daout<="1101101";WHEN"010"=>daout<="0000111";WHEN"011"=>daout<="1101111";WHEN"100"=>daout<="1111100";WHEN"101"=>daout<="1011110";WHEN"110"=>daout<="1110001";WHEN"111"=>daout<="0000110";WHENOTHERS=>NULL;ENDCASE;ENDIF;ENDIF;ENDPROCESS;ENDone;其波形仿真如图4.11所示。图4.11波形仿真24
26其管脚修改如图4.12所示。图4.12改管脚其电路生成图如图4.13所示。图4.13电路生成符号将其下载到实验箱上时,我们就可以发现在数码管上显示13579BDF字样,而且不同的频率显示不同,仿真成功。三、总结第一个实验中其异步清零端CLR、使能端EN、时钟输入端CLK、计数输出段Q[3..0]、进位输出端C,当en为低电平时其输出全为0,clr为高电平时其才可以计数。第二个实验中七段显示器译码程序,显示从0-F当输入一个代码是其会产生与之对应的字符。第三个实验我们可以通过更改脉冲的频率得到不同频率下的其实验现象。第四个实验我们也可以发现当我们加入不同的频率时,其闪烁的频率也会变化。直到我们的人眼能够观察的范围是其就会是其一个一个的轮流显示。25
27南京理工大学泰州科技学院FPGA系统设计实验报告课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:10020401491002040150指导教师:周莉莉实验日期:实验题目:有限状态机的设计成绩:一、设计任务1、了解有限状态机的概念;2、掌握Moore型有限状态机的特点和其VHDL语言的描述方法;3、掌握Mealy型有限状态机的特点和其VHDL语言的描述方法。二、设计过程1.下文为单进程Moore型有限状态机的例子,其VHDL语言如图5.1描述如下:图5.1程序这是一个单进程的Moore状态机,其特点是组合进程和时序进程在同一个进程中,此进程可以认为是一个混合进程。2.该状态机时一个2进程Mealy型状态机,进程COMREG是时序与组合混合型进程;进程COM1负责根据状态和输入信号给出不同的输出信号。libraryieee;26
28useieee.std_logic_1164.all;entityMEALY1isport(clk,datain,reset:instd_logic;q:outstd_logic_vector(4downto0));endMEALY1;architectureoneofMEALY1istypestatesis(st0,st1,st2,st3,st4);signalstx:states;begincomreg:process(clk,reset,datain,stx)--主控时序进程beginifreset='1'thenstx<=st0;elsifclk'eventandclk='1'thencasestxiswhenst0=>ifdatain='1'thenstx<=st1;endif;whenst1=>ifdatain='0'thenstx<=st2;endif;whenst2=>ifdatain='1'thenstx<=st3;endif;whenst3=>ifdatain='0'thenstx<=st4;endif;whenst4=>ifdatain='1'thenstx<=st0;endif;whenothers=>stx<=st0;endcase;endif;endprocesscomreg;com1:process(stx,datain)--主控组合进程begincasestxiswhenst0=>ifdatain='1'thenq<="10000";elseq<="01010";endif;whenst1=>ifdatain='0'thenq<="10111";elseq<="10100";endif;whenst2=>ifdatain='1'thenq<="10101";elseq<="10011";endif;whenst3=>ifdatain='0'thenq<="11011";elseq<="01001";endif;whenst4=>ifdatain='1'thenq<="11101";elseq<="01101";endif;whenothers=>q<="00000";endcase;endprocesscom1;endone;27
293.该状态机属于Moore型状态机,由两个主控进程构成,其中进程REG是主控时序进程,COM是主控组合进程。libraryieee;useieee.std_logic_1164.all;entitys_machineisport(clk,reset:instd_logic;state_inputs:instd_logic_vector(0to1);comb_outputs:outintegerrange0to15);ends_machine;architectureoneofs_machineistypeFSM_STis(s0,s1,s2,s3);signalcurrent_state,next_state:FSM_ST;beginreg:process(reset,clk)beginifreset='1'thencurrent_state<=s0;--主控时序进程elsifclk'eventandclk='1'thencurrent_state<=next_state;endif;endprocessreg;com:process(current_state,state_inputs)begincasecurrent_stateiswhens0=>comb_outputs<=5;--主控组合进程ifstate_inputs="00"thennext_state<=s0;elsenext_state<=s1;endif;whens1=>comb_outputs<=8;ifstate_inputs="00"thennext_state<=s1;elsenext_state<=s2;endif;whens2=>comb_outputs<=12;ifstate_inputs="11"thennext_state<=s0;elsenext_state<=s3;endif;whens3=>comb_outputs<=14;ifstate_inputs="11"thennext_state<=s3;elsenext_state<=s0;endif;endcase;endprocesscom;endone;28
304.分别作出以上三种状态机时序逻辑仿真分析图。5.设计一个报时电路,整个报时电路共有四个状态(s0,Alamp,Blamp,Clamp)。s0表示非正点任意时刻的状态,电路中没有警报提示。Alamp,Blamp,Clamp分别表示时钟在正点时刻的三个状态,分别用三种颜色的发光二极管显示三个状态在正点时刻的相互转换,同时伴有蜂鸣器的报警声响。当时钟在非正点的任意时刻,报时电路一直处于s0状态。当时钟在正点时刻,报时电路就从s0状态转到Alamp状态,然后Alamp→Blamp→Clamp→Alamp→Blamp相互转换,直到不是正点时刻再转换为s0状态。试用Moore型2进程状态机实现该报时电路。实验一的波形仿真如图5.2所示。图5.2波形图1实验二的波形仿真如图5.3所示。图5.3波形图2实验三的波形图如图5.4所示。图5.4波形图329
31实验四的程序如下所示。libraryieee;useieee.std_logic_1164.all;entityshiyan4isport(clk:instd_logic;k:instd_logic;speak:outstd_logic;lamp:outstd_logic_vector(2downto0));end;architectureaofshiyan4istypestate_typeis(s0,s1,s2,s3);signalstate:state_type;beginprocess(clk)beginif(clk'eventandclk='1')thenifk='1'thencasestateiswhens0=>state<=s1;whens1=>state<=s2;whens2=>state<=s3;whens3=>state<=s0;whenothers=>state<=s0;endcase;elsestate<=s0;endif;endif;endprocess;process(state)begincasestateiswhens1=>lamp(0)<='1';lamp(1)<='0';lamp(2)<='0';speak<='1';whens2=>lamp(1)<='1';lamp(0)<='0';lamp(2)<='0';speak<='1';whens3=>lamp(2)<='1';lamp(0)<='0';lamp(1)<='0';speak<='1';whenothers=>lamp<="000";speak<='0';endcase;endprocess;enda;其波形仿真如图5.5所示。30
32图5.5波形图其管脚分配情况如图5.6所示。图5.6管脚修改其电路生成符号为图5.7所示。图5.7电路生成符号将其下载到实验箱上时我们科一看到在整点时其灯来回闪烁,并有报鸣声响起,报时电路就从s0状态转到Alamp状态,然后Alamp→Blamp→Clamp→Alamp→Blamp相互转换,直到不是正点时刻再转换为s0状态。三、总结VHD对不同的状态机有不同的描述方法,使得综合出来的门级网表也不同,必须根据数字电路的特性和可综合性选择相应的状态机描述方式。主要内容有:①状态编码的描述;②用于指明状态机状态的状态变量的描述;③状态转移的描述(次态译码的描述);④输出的描述。31
33南京理工大学泰州科技学院FPGA系统设计实验报告学号:1002040149课程:FPGA系统设计班级:10电信1班姓名:周根生朱守超1002040150指导教师:周莉莉实验日期:实验题目:数字频率计成绩:一、设计任务设计数字频率计,测量频率在1MHz以内,显示4位十进制输出结果。可根据信号频率的大小自动切换量程,量程分三档,最大读数分别为9.999kHz和999.9kHz。当被测信号频率大于999.9kHz时,频率计处于超量程状态,数码管提示溢出(显示读数“F”),同时报警指示灯闪烁。二、设计过程数字频率计的整体设计狂徒主要模块包括分频模块、计数模块、锁存模块、动态扫描译码显示模块。1、计数模块(1)编译程序如图132
3433
35图1程序图(2)波形仿真如图2图2波形图(3)模块图如图3图3模块图2、译码模块(1)编写程序如图434
36图4程序图(2)波形仿真如图5图5波形图(3)模块图如图635
37图6模块图3、分频模块(1)编写程序如图7图7程序(2)波形仿真如图8图8波形图(3)模块图如图936
38图9模块图4、锁存模块(1)编写程序如图10图10程序(2)波形仿真如图11图11波形图(3)模块图如图1237
39图12模块图5、扫描模块(1)编写程序如图1338
4039
41图13程序(2)波形仿真如图14图14波形图(3)模块图如图15图15模块图6、模块拼装(1)模块图如图1640
42图16模块拼接总图(2)波形仿真如图17图17波形总图(3)引脚的分配和调整如图18图18引脚图三、总结通过本次试验我学习MAX+PLUSⅡCPLD开发系统的模块操作,通过MAX+PLUSⅡ设计了简单的数字频率计并且进行了仿真。先对各个功能模块单独编程仿真,再将各个模块组合并且设置引脚,最后进行总仿真。要深刻掌握这个软件还有待以后的实践与孜孜不倦的钻研,所以为了深刻掌握此软件,我将会继续钻研它。41