《EDA实验4消抖电路的顶层设计和移位寄存器的功能仿真设计》由会员分享,可在线阅读,更多相关《EDA实验4消抖电路的顶层设计和移位寄存器的功能仿真设计(8页珍藏版)》请在金锄头文库上搜索。
1、. . EDA实验四 消抖电路的顶层设计和移位寄存器的功能仿真一、实验目的:了解消抖电路的原理与应用并用VHDL顶层代码实现;了解触发器的基本原理,并且掌握LPM元件定制;掌握基本时序电路VHDL编写;了解移位寄存器的工作原理与应用;熟悉波形仿真基本方法;熟悉相关LPM元件定制;掌握VHDL元件例化方法;了解混合模块的工程设计方法。二、实验容:实验容分为两部分,一是消抖电路的设计与实现,其中底层用DFF:LPM_FF定制,顶层用VHDL结构式描述;另外一个容是74194(移位寄存器)功能仿真,了解具体的仿真方法与步骤。三、实验方法:实验方法:采用基于FPGA进行数字逻辑电路设计的方法。采用的软
2、件工具是QuartusII软件仿真平台,采用的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。实验步骤:1、编写源代码(或者绘制电路逻辑图)。打开QuartusII软件平台,点击File中的New建立一个文件。编写的文件名与实体名一致,点击File/Save as以“.vhd”为扩展名存盘文件。2、按照实验箱上FPGA的芯片名更改编程芯片的设置。操作是点击Assign/Device,选取芯片的类型。3、编译与调试。确定源代码文件为当前工程文件,点击Complier进行文件编译。编译结果有错误或警告,则将要调试修改直至文件编译成功。4、波形仿真及验证。在编译成功后,点击W
3、aveform开始设计波形。点击“insert the node”,按照程序所述引脚,任意设置各输入节点的输入波形点击保存按钮保存。5、FPGA芯片编程及验证,应记录实验结果进行分析。四、实验过程:实验(一)消抖电路的设计与实现a)利用LPM元件定制D触发器,具体步骤如下:(1)按照上次实验定制LPM的步骤和方法进行定制,lpm_ff元件所示的宏功能选择对话框的左侧列表中选择Installed Plug_Ins-Storage-lpm_ff项。(2)在参数设置页面1中,输入data选用1位,clock为时钟信号,类型为D型。(3)在参数设置页面2中添加异步清零和异步置1.然后按finish完成
4、,然后找出定制文件夹中的VHDL文件,名称为lpm_D.vhd。至此D触发器定制完成,然后设计消抖电路。b)消抖电路的设计,步骤如下:(1)新建一个工程文件,工程名和文件名均为xiaodou,然后按照实验箱上FPGA的芯片名更改芯片的设置,选取芯片类型,建好工程。设置如下图所示:(2)工程建好后,然后将步骤a中定制的lpm_D.vhd文件复制到xiaodou文件夹中,即是放置底层文件。(3)新建文件,编写VHDL源代码,用结构式描述完成消抖电路的顶层设计,然后保存编译,并进行波形仿真。VHDL代码如下:library ieee;use ieee.std_logic_1164.all;entit
5、y xiaodou is port(d_in,clk:in STD_LOGIC; clk_out: out STd_LOGIC);end xiaodou;architecture a of xiaodou is signal w,x: STD_LOGic ;component lpm_D isport(clock:in std_logic; data:in std_logic; Q:out std_logic);end component;begindff1:lpm_D port map(clk,d_in,w);dff2:lpm_D port map(clk,w,x);clk_outnew,选
6、择Vector Waveform File,新建一个波形仿真文件,然后在空白处点击右键,选择“Insert Node or Bus”,出现一个对话框,进行添加节点,然后输入时钟激励信号,并进行参数设置,两个重要的参数:End time结束时间和Grid size网格大小。点击Edit-Value-Clock,出现一个对话框设置时钟激励周期,相位以及其他参数,(注意d_in的时钟设置)点击OK,显示波形图如下:接着保存波形文件,然后进行仿真。在仿真之前要先生成功能仿真表,首先要先设置仿真模式。然后点击菜单项Processing-Generate Function Simulation Netli
7、st,产生功能仿真所需要的网表,接着就能进行仿真操作了。波形仿真。打开processing 仿真工具,出现仿真设置对话框,然后开始进行功能仿真。这是功能仿真即波形仿真的波形图。d)、波形仿真图分析由D触发器的工作原理可知,当CLK为上升沿是,输入端有效,即是clk上升沿,d_in为高电平时,clk_out为高,d_in为低电平时,clk_out为低,;clk不是上升沿则clk_ou保持前一个值不变。由波形图可知,正符合上述结果,这样设计也就实现了消抖的功能,是输出为稳定的脉冲,而不会随输入的波动而出现波动。由波形图也可以看出虽然输入不稳定但是输出任然是稳定的,这样就达到了目的。f)下载验证:波
8、形仿真进行完之后再进行一次全编译,后设置引脚,引脚设置如下:其中CLK为时钟输入,每当上升沿时D触发器有效。硬件实验箱的验证结果如下:按下70按钮,输出9led则会亮,而且稳定,在验证结果的过程注意讲clk的时钟周期调长些,以便于观察。此次实验的观察结果和波形验证的一样,即是实现了消抖电路的功能。RTL Viewer 原理图:实验(二)移位寄存器的功能仿真此次实验的目的旨在学习电路仿真的基本方法,并不要求下载验证,熟悉功能仿真的步骤。实验过程如下:用一片74194芯片连接好功能验证电路,如下图所示:画好验证电路图之后就进行功能仿真(此处编译过程省略),具体的仿真步骤如下;1) 新建波形文件后的
9、波形图参数设置设置网格宽度Grid size和时间轴长度End time 。这两个参数是波形图的基本参数。添加节点前设置好参数可以减少波形图重复调整的时间开销。网格宽度和时间周期密切相关,通常设置为时钟周期的四分之一,二分之一或者整数倍。时间轴长度默认为1us,需要配合网格保证充裕的仿真时间。此处设置为时钟的二分之一。2)添加节点或总线后的信号整合和位置分配添加节点或总线后的VWF文件如下图所示,信号杂乱需要重新调整位置和整合。信号位置分配注意:激励输入信号(I类)和待分析的输出信号(O类R类C类)上下放置,界限分明;时钟信号置顶,其他输入信号按“异步控制,同步控制,数据输入”顺序向下放置;同
10、一元器件的控制信号就近放置;同一功能的控制信号就近放置。重新调配后的图形如下所示:然后进行信号整合,把信号整合成总线,整合注意:符合总线形式的I/O信号优先整合;同一器件和同一属性的控制信号优先整合;脉冲信号一般不整合;整合前信号应按“高位-低位”顺勋乡向下放置;整合后信号名以能直观反映该信号功能为宜。信号整合后的波形图如下图所示:3)激励输入及分段仿真,设置仿真激励及仿真注意如下:(1)首先设置时钟等系统信号激励完成电路初始状态,如下图所示:(2)、分段仿真,将时间轴划分为连续的时间段,一时间段完成一小步实验容。一小段信号激励输入完成后立即生成波形并判断结果;波形正确之后再根据下一步实验容直
11、至完成所有的实验容仿真。一、仿真并行置入1010,仿真波形如下图:结果判断:由上波形图可知,当clk为上升沿,sl_sr为11时,输入abcd为1010,则输出q_abcd并行置入1010,结果正确。二、接着进行仿真异步清零功能,仿真波形如下:结果判断:clrn为异步清零,当clrn为低电平时,输出端清零,由上波形图可看出,当clrn为低电平时,输出q_abcd清零,仿真结果正确。三、串行右移仿真,仿真波形如下:结果分析:串行右移是当s为01时,clk处于上升沿时,输出结果为SRSI,ABC,由上面两个波形可知,当处于细线位置时分别发生串行右移,对图一在原有的基础上移入数据位为1,故结果为10
12、00,正确;对于图二,当clk处于上升沿时,移入数据位为0,故结果为0100,波形仿真正确。四、串行左移仿真,仿真波形如下图:结果分析:串行左移是当s为10时,clk处于上升沿时,输出结果为BCD,SLSI。由上面两个波形可知,当处于细线位置时分别发生串行左移,对图一在原有的基础上移入数据位为1,故结果为1001,正确;对于图二,当clk处于上升沿时,移入数据位为0,故结果为0010,波形仿真正确。五、保持仿真,此步骤以上波形均有说明,当s为00,clk为上升沿时,输出保持当前值不变,由以上波形图可看出仿真结果是正确的。至此移位寄存器的波形仿真完成,最终结果为上诉串行左移完成后的波形图。思考题6、VHDl元件例化语句的作用:VHDL元件例化语句主要用于结构式描述方式时调用库元件或底层实体,是系统层次化设计的一种重要途径。7、signal作用是是声明一个信号,一般是用在architecture后面声明,一般在结构体中定义,属于全局变量,在任何进程中都可以调用。8、lpm_ff定制时clear、load、set输入有哪两类?异步清零,异步置1 . . .