数字电路与逻辑设计实验报告第1页共20页实验六触发器的仿真班级姓名学号指导老师一、实验目的熟悉QuartusⅡ仿真软件的基本操作,用逻辑图和VHDL语言设计实现D锁存器、边沿D触发器、边沿JK触发器。二、实验内容1.用逻辑图和VHDL语言设计D锁存器,并进行仿真与分析;2.参看QuartusⅡ中器件7474(边沿D触发器)的逻辑功能,用VHDL语言设计边沿触发式D触发器,并进行仿真与分析。3.参看QuartusⅡ中器件7476(边沿JK触发器)的逻辑功能,用VHDL语言设计边沿触发式JK触发器,并进行仿真与分析。三、实验原理(1)D锁存器(DLatch)逻辑图逻辑功能表ENDQQN100111100×保持Q保持QNEn高电平有效,输出端q输出输入端d输入的信号,QN与Q值相反,当en为低电平,q与qn都保持原有值。(2).边沿式D触发器(Positive-Edge-TriggeredDFlip-FlopswithPreset,ClearandComplementaryOutputs)逻辑框图逻辑功能表INPUTsOUTPUTsPRCLRCLKDQQN数字电路与逻辑设计实验报告第2页共20页01××1010××0100××1(失效)1(失效)11↑11011↑001110×保持Q保持QN注:↑=Positive-goingTransition电路板左上角有时钟信号(3)边沿式JK触发器逻辑框图逻辑功能表INPUTsOUTPUTsPRCLRCLKJKQQN01×××1010×××0100×××1(失效)1(失效)11↓00保持Q保持QN11↓101011↓010111↓11Toggle(翻转)111××保持Q保持QN注:↓=Transitionfromhightolowlevel四、实验方法与步骤实验方法:采用基于FPGA进行数字逻辑电路设计的方法。采用的软件工具是QuartusII软件仿真平台,采用的硬件平台是AlteraEPF10K20TI144_4的FPGA试验箱。(1)D锁存器(DLatch)数字电路与逻辑设计实验报告第3页共20页实验步骤:1、编写源代码。(1)打开QuartusⅡ软件平台,点击File中得NewProject新建工程,将工程名称建得跟文件夹名称一样。在File中New建立一个VHDL文件。(2)点击File/Saveas以“.vhd”为扩展名存盘文件,命名为“D_latch.vhd”,保存时勾选“Addfiletocurrentfile”选项。点击“processing”选择“compiletool”,点击“start”进行全编译。Vhdl代码如下:libraryieee;useieee.std_logic_1164.all;entityD_Latchisport(en:instd_logic;d:instd_logic;q:outstd_logic;qn:outstd_logic);endD_Latch;architecturebhvofD_Latchisbeginprocess(en,d)beginif(en='1')thenif(d='1')thenq='1';qn='0';elseq='0';qn='1';endif;endif;endprocess;endbhv;2.建立波形文件。(1)点击File中得New建立一个波形文件。(2)点击“Edit”中“insert”的“insertnodesandbus_”,进入界面1,单击“NodeFinder”,进入界面2,在“Filter”下拉列表中选择“Pinsall”,点击“list”,“NodesFound”框格中出现节点,双击节点选中节点,使节点名出现在选中的节点框格“SelectedNodes”中.点击“OK”返回界面1,再点击“OK”完成节点选择。(3)点击“Edit”中“endtime”,出现界面3,将时间设定为2.0us.(4)点击“Edit”中“gridsize”,出现界面4,将网格大小设定为100ns.数字电路与逻辑设计实验报告第4页共20页界面1界面2界面3界面4(5)选中节点,将其上下移动,调整顺序为:en,d,q,qn;(6)点击节点en,,使其成为高亮状态,点击左数字电路与逻辑设计实验报告第5页共20页侧栏中的,进入界面5,将开始值“startvalue”设为’0’,点击“timing”,将开始时间“starttime”设为0,结束时间“endtime”设为2.0us,每个值的时间长度(半周期)“countevery”设定为220ns,值“Mulipliedby”为“1”。点击“确定”输入信号激励。(7)同理将节点d设为周期为120ns,其他为默认值;(8)点击”View”中的”Zoomout”命令缩小波形显示,至波形为适合大小;(9)点击File/Saveas以“.vwf”为扩展名存盘文件,命名为“D_latch.vwf”,保存时勾选“Addfiletocurrentfile”选项。界面53.波形仿真及验证。保存波形文件后,点击”processing“中”Generatefunctionalsimulationnetlist”,命令产生功能仿真网表。出现成功后提示如下图4后,点击”assignments“中”settings”,出现以下界面6。点击左侧栏中“simulatorSettings”,在”Simulationmode”的下拉列表中选择“Functional”,指定波形激励文件”Silulationinput“为本波形文件“D_latch.vwf”,点击“OK”完成设定。点击“Processing”中的“Startsimulation”,开始功能仿真。若仿真成功,会提示仿真成功图5,能够从SimulationReport窗口查看结果,见图6。界面6.时序仿真:功能仿真成功后,点击”assignments“中”settings”,出现以下界面6。点击左侧栏中“simulatorSettings”,在”Simulationmode”的下拉列表中选择“timing”,指定波形激励文件”Silulationinput“为本波形文件“D_latch.vwf”,点击“OK”完成设定。点击“Processing”中的“Startsimulation”,数字电路与逻辑设计实验报告第6页共20页开始功能仿真。若仿真成功,会提示仿真成功图6,能够从SimulationReport窗口查看结果。五、实验结果与分析(第一手实验“素材”的“展示”、分析说明)1.编译过程a)编译过程、调试结果(1)D_latch.vhd全编译检查没有错误,见图1:-图1b)功能仿真过程(2)波形文件D_latch.vwf产生功能仿真网表成功,见图2:图2(3)波形文件D_latch.vwf功能仿真成功,见图3:图3c)时序仿真过程:(4)波形文件D_latch.vwf功能仿真成功,见图4:数字电路与逻辑设计实验报告第7页共20页图4d)结果分析及结论:制作的波形图如图5所示:图5功能仿真结果如图6所示:图6时序仿真结果如图7所示:图7b)结果分析及结论功能仿真时,当en为高电平,输出端q输出的信号跟输入端d的信号一致,而输出端qn恰好相反,逻辑正确;时序仿真跟功能仿真波形图基本一致,有15ns的时间延迟,在900ns时,输入节点en和d的信号都发生了突变,出现了冒险。可以将其中一个或者两个节点的周期适当延长或者直接改值。六、.Programming芯片编程a)将VHDL编译成功后,点击“Assignments”选择“pins”,进入界面8,分别为en,d,q,qn选择分配管脚51,44,92,87;数字电路与逻辑设计实验报告第8页共20页界面8点击tools选择programmer,进入界面9界面9点击“hardwareSetup”,进入界面10,“Currentlyselectedhardware”选择“USB—Blaster[USB-0]”数字电路与逻辑设计实验报告第9页共20页界面10单击close返回界面9。单击start开始下载,直至出现。在电路板上验证。b)编程芯片FPGA验证结果1.当en,输入1,d输入1时,q输出1,qn输出0:验证如图16图162.当en,输入1,d输入0时,q输出0,qn输出1:验证如图17数字电路与逻辑设计实验报告第10页共20页图173.当en,输入0,保持上一状态的输出,q输出0,qn输出1:验证如图18图18c)结果分析与结论En高电平有效,输出端q输出输入端d输入的信号,QN与Q值相反,当en为低电平,q与qn都保持原有值。验证成功(2).边沿式D触发器。实验步骤1.编写vhd代码。新建文件夹为D_chufa,在该文件夹内新建工程与该文件夹名称一致,在该工程内新建vhd文件。编写完后点击file—save保存文件。点击compiletool—start进行全编译直至编译通过。Vhd代码如下:Vhd:libraryieee;useieee.std_logic_1164.all;entityD_chufaisport(prn:instd_logic;clk:instd_logic;din:instd_logic;clrn:instd_logic;q:outstd_logic;qn:outstd_logic);endD_chufa;数字电路与逻辑设计实验报告第11页共20页architecturebhvofD_chufaisbeginprocess(prn,clrn,clk,din)beginif(prn='0')thenif(clrn='0')thenq='1';qn='1';elseq='1';qn='0';endif;elseif(clrn='0')thenq='0';qn='1';elseif(clk='1'andclk'event)thenq=din;qn=notdin;endif;endif;endif;endprocess;endbhv;2.制作波形图。点击file—new建立一个波形文件;点击file—insertnodesandbus,单击“NodeFinder”,在“Filter”下拉列表中选择“Pinsall”,点击“list”,“NodesFound”框格中出现节点,双击节点选中节点,使节点名出现在选中的节点框格“SelectedNodes”中.点击“OK”完成节点选择,再次点击“OK”返回原界面;点击“Edit”中“endtime”,将时间设定为2.0us;点击“Edit”中“gridsize”,将网格大小设定为100ns.选中节点,将其上下移动,调整顺序为:clk,prn,clrn,din,q,qn;将时钟信号clk设为开始值为0,周期为200ns;复位端prn在0~100ns、300~460ns输入为有效低电平‘0’,其余时间输入高电平‘1’;清零端clrn在0~200ns输入为有效低电平‘0’,其余时间输入高电平‘1’;点击”View”中的”Zoomout”命令缩小波形显示,至波形为适合大小;点击File/Saveas以“.vwf”为扩展名存盘文件,命名为“D_chufa.vwf”,保存时勾选“Addfiletocurrentfile”选项。3.波形仿真及验证。保存波形文件后,点击”processing“中”Generatefunctionalsimulationnetlist”,命令产生功能仿真网表。出现成功后提示后,点击”assignments“中”settings”,点击左侧栏中“simulatorSettings”,在”Simulationmode”的下拉列表中选择“Functional”,指定波形激励文件”Silulationinput“为本波形文件“D_chufa.vwf”,点击“OK”完成设定。点击“Processing”中的“Startsimulation”,开始功能仿真。若仿真成功,会提示仿真成功,能够从Si