实验二基于HDL十进制计数器设计_第1页
实验二基于HDL十进制计数器设计_第2页
实验二基于HDL十进制计数器设计_第3页
实验二基于HDL十进制计数器设计_第4页
实验二基于HDL十进制计数器设计_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

基于HDL十进制计数、显示系统设计实验目的掌握基于语言的ISE设计全流程;熟悉、应用VerilogHDL描述数字电路;掌握基于Verilog的组合和时序逻辑电路的设计方法。掌握chipscope片内逻辑分析仪的使用与调试方法。设计准备设计输入设计处理器件编程功能仿真器件测试时序仿真设计准备设计任务:具有数显输出的十进制计数器的设计设计准备设计任务表述:输入信号:clk_50m---系统采样时钟clk-------待计数的时钟clr---------异步清零信号,当clr=1,输出复位为0,当clr=0,正常计数ena---------使能控制信号,当ena=1,电路正常累加计数,否则电路不工作输出信号:q[6:0]---------驱动数码管,显示计数值的个位COM-----------共阳级数码管公共端(接VCC)设计准备需主要设计完成两个子模块,一个是十进制计数器(cnt10.v),一个是驱动七段数码管的模块(led.v)。由于实验板上的按键需要消抖,增加一个消抖模块debounce_module,待计数的时钟clk输入至计数器前,先通过消抖模块。本设计共包括3个模块。设计准备十进制计数器:对输入时钟进行计数输入:CLK-------待计数的时钟CLR---------异步清零信号,当CLR=1,输出复位为0,当CLR=0,正常计数ENA---------使能控制信号,当ENA=1,电路正常累加计数,否则电路不工作输出:SUM[3:0]----------计数值的个位。即,在CLK上升沿检测到SUM=9时,SUM将被置0,开始新一轮的计数。COUT------------计数值的十位进位,即:只有在时钟CLK上升沿检测到SUM=9时,COUT将被置1,其余情况下COUT=0;设计准备LED显示驱动模块(led.v)输入:sum[3:0]-------待显示的数值out[6:0]----------驱动数码管的七位数值(注意下表中out的对应位)数码输入sum输出out对应码(h)3210Aout[0]Bout[1]Cout[2]Dout[3]Eout[4]Fout[5]Gout[6]00000000000181100011001111CF2001000100109230011000011086401001001100CC501010100100A4601100100000A07011100011118F8100000000008091001000010084A1010000100088b10111100000E0C11000110001B1d11011000010C2E11100110000B0F11110111000B8设计准备电源按键消抖:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。根据实验板的资料,对按键输入信号需进行消抖处理。设计准备消抖模块电平检查模块:检测输入的按键是否被按下或者释放,并分别将H2L_Sig,L2H_Sig拉高,并随后拉低,给出按键的操作信息。延时模块,对输入的信号变化时刻进行计时并观察信号的变换情况,对输出端口进行恰当地赋值实验资料中给出消抖模块设计源代码。消抖模块不要求仿真下面分别设计1、十进制计数器cnt10.v.2、LED驱动模块led.v3、按键消抖模块4、顶层模块设计设计准备设计输入设计处理器件编程功能仿真器件测试时序仿真十进制计数器cnt10.v的设计设计输入建立工程:file->NewProject要求:同学们在E盘或者DATA盘的根目录下,以自己的学号为文件名建立工程选择Top-level的类型是HDL设计输入注意器件、EDA工具的正确选择设计输入建立工程后,开始模块的设计。cnt10.v模块设计1、建立新VerilogHDL模块编辑窗口设计输入选择VerilogModule,并输入合法文件名设计输入在文本编辑窗口输入代码设计处理在sources窗口选中待综合模块cnt10,在process窗口双击Synthesize-XST综合完后可以双击Synthesize-XST下的ViewRTLSchematic,得到综合后的电路图。1、综合:功能仿真1)建立仿真激励文件功能仿真考虑完备性测试和减短仿真耗时,将时钟周期改为100ns,测试文件时间长度2000ns功能仿真根据所设计的十进制计数器的各种工作状态,完成激励信号的编辑功能仿真进行仿真:1、选择sourcesfor:BehavioralSimulation2、选中激励源文件3、双击simulateBahavioralModel功能仿真分析得到的仿真波形,如有问题,对设计进行修正由于本次设计的时钟周期长,对时序没有要求,故可以省略各子模块的时序仿真。LED驱动模块led.v的设计分析下表,(注意输出out[6:0]与下表数据的对应关系)理解led.v模块的功能数码输入sum输出out对应码(h)3210Aout[0]Bout[1]Cout[2]Dout[3]Eout[4]Fout[5]Gout[6]00000000000181100011001111CF2001000100109230011000011086401001001100CC501010100100A4601100100000A07011100011118F8100000000008091001000010084A1010000100088b10111100000E0C11000110001B1d11011000010C2E11100110000B0F11110111000B8LED驱动模块led.v的设计按照与cnt10.v相同的设计步骤完成led.v模块的设计输入、综合、功能仿真cnt10.v和led.v组合为一个系统

用VerilogHDL将cnt10.v和led.v组合为一个模块,完成综合、功能仿真,分析波形,修正设计。消抖模块设计了解消抖模块的功能,拷贝相关代码拟采用实验板上的50MHZ时钟为延迟计数时钟消抖模块端口说明:

debounce_module(CLK,RSTn,Pin_In,Pin_Out);CLK----50MHZ板上时钟,提供给延时模块计时使用。RSTn----异步复位信号,RSTn=1,复位Pin_In---待消抖信号,在本次设计是输入给十进制的时钟信号。Pin_Out----消抖后输出信号,输到十进制计数模块的时钟信号。顶层模块设计硬件测试平台设计:

系统输入:十进制计数器cnt10模块中的复位信号(clr)通过拨动开关SW3输入,使能信号(ena)通过拨动开关SW2输入,待计数时钟clk通过按键V16输入,为保证设计效果,将clk通过消抖模块处理后,生成的clk_out送到后续模块。

系统输出:向十位的进位可以锁于发光二极管(比如:LD4)数码管驱动的七位信号可输出到D5,B6,E7,F7,B4,A4,C5等引脚。为简化设计,消抖模块的复位信号、使能信号与cnt10模块共用顶层模块设计用VerilogHDL代码描述模块的连接,构成如下图所示的系统:顶层模块处理HDL代码完成后,综合。顶层模块不需要仿真。顶层模块处理引脚锁定:信号名引脚号信号名引脚号信号名引脚号clrN17AC5EB6enaH18BB4FE7clkV16CA4GA6clk_50mC9DF7COMD5顶层模块处理由于clk没锁于ISE默认的时钟输入引脚上,需要添加“CLOCK_DEDICATED_ROUTE=FALSE;”为了更好的消抖效果,需要在V16输入端口加入下拉电阻,即需加“PULLDOWN”。所以在约束文件(.ucf)中clk的锁定应为为:1)、NET“clk”LOC=“V16”|PULLDOWN|CLOCK_DEDICATED_ROUTE=FALSE;”:或者2)NET“clk”LOC=“V16”|PULLDOWN;NET"clk"CLOCK_DEDICATED_ROUTE=FALSE;用户约束文件(*.ucf)参考:NET"clk"LOC=V16| IOSTANDARD=LVCMOS33|PULLDOWN; NET"clk_50m"LOC=C9|IOSTANDARD=LVCMOS33; NET"clr"LOC=N17| IOSTANDARD=LVCMOS33; NET"ena"LOC=H18| IOSTANDARD=LVCMOS33; NET"q[0]"LOC=C5| IOSTANDARD=LVCMOS33;#DATA0 aNET"q[1]"LOC=B4| IOSTANDARD=LVCMOS33;#DATA1 bNET"q[2]"LOC=A4| IOSTANDARD=LVCMOS33;#DATA2 cNET"q[3]"LOC=F7| IOSTANDARD=LVCMOS33; #DATA3 dNET"q[4]"LOC=B6| IOSTANDARD=LVCMOS33;#DATA4 eNET"q[5]"LOC=E7| IOSTANDARD=LVCMOS33;#DATA5 fNET"q[6]"LOC=A6| IOSTANDARD=LVCMOS33; #DATA6 gNET"COM"LOC=D5| IOSTANDARD=LVCMOS33;#DATA7DIG 顶层模块处理双击ImplementDesign,进行布局布线下载双击GenerateProgrammingFile生成下载文件双击ConfigureTargetDevice点击OK下载点击Finish下载下载对随后的两个器件,一个是Prom,一个是CPLD,选择Bypass。下载弹出对话框,点击OK下载下载后,改变拨动开关和按键,观察结果Chipscope在线调试Chipscope是Xilinx推出的一款在线调试软件,如图,通过JTAG仿真器将FPGA芯片中实际运行的各种参数通过配置,传回ISE套件中的chipscope软件类似于示波器,chipscope提供触发深度,触发方式等一系列设置,同时提供数据采样观察窗口Chipscope调试开始–新建.cdc文件在HDL工程中添加chipscopefile,选择ChipScopeDefinitionandConnectionFile,filename取名segChipscope-配置.cdc文件在原有的HDL工程下出现新建seg.cdc文件,可以在chipscope植入

ILA和ICONIP核,双击seg.cdc文件,进入配置界面。Chipscope-设置触发端口、类型等进入配置界面,每个触发端口ILA核可支持多路比特数据,最多可有16个端口,触发匹配类型共有6种。这里配置根据需要调试的数据个数、类型决定。Chipscope-设置采样深度设置采样深度,即为一次采样数据所显示的深度、个数。深度范围512-16384,采样深度越深,耗费资源越多。然后点击NetConnections标签,设置设置触发时钟与触发信号界面。Chipscope-设置采样信号选择ModifyConnections选项,进入采样时钟和触发信号设置,采样时钟用于捕捉触发信号Chipscope-设置采样时钟设置触发时钟,一般选择系统频率最高的主时钟注:Netselections中每个channel必须有添加有信号,否则综合要报错同样设置触发信号,将TPO与TP1端口中的每个channel都添加,此处TP0监测clk、clr、ena、coutTP1监测的数码管七段信号q[7:0]、以及COMChipscope-设置触发数据注:一般选择缓冲后的信号,例如q_0_OBUFChipscope-JTAG扫描设置好以后保存退出,综合与实现,双击图中AnalyzeD

温馨提示

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

评论

0/150

提交评论