ImageVerifierCode 换一换
格式:DOCX , 页数:89 ,大小:1.45MB ,
资源ID:6804343      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6804343.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验八 数字电路功能与实现Word格式文档下载.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验八 数字电路功能与实现Word格式文档下载.docx

1、0 sum;output cout;input3:0 ina,inb;input cin;assign cout,sum=ina+inb+cin;endmodule2. 实验目的(1) 熟悉 ISE9.1 开发环境,掌握工程的生成方法;(2) 熟悉 SEED-XDTK XUPV2Pro 实验环境;(3) 了解 Verilog HDL语言在 FPGA 中的使用;(4) 了解4位全加器的Verilog HDL语言实现。3. 实验内容(1)用Verilog HDL语言设计4位全加器,进行功能仿真验证;(2)使用chipscope-Pro 生成 ILA/ICON 核,在线观测调试。4. 实验准备(1)

2、将 USB 下载电缆与计算机及 XUPV2Pro 板的 J8 连接好; (2)将 RS232 串口线一端与计算机连接好,另一端与板卡的 J11 相连接;(3)启动计算机后,将 XUPV2Pro 板的电源开关 SW11 打开到 ON 上。观察 XUPV2Pro 板上的2.5V,3.3V,1.5V 的电源指示灯是否均亮,若有不亮的,请断开电源,检查电源;5. 实验步骤(1)创建工程及设计输入1) 在E:project目录下,新建名为count8的新工程;器件族类型(Device Family)选择“Virtex2P”器件型号(Device)选“XC2VP30 ff896 -7”综合工具(Synth

3、esis Tool)选“XST (VHDL/Verilog)”仿真器(Simulator)选“ISE Simulator”2)设计输入,在源代码窗口中单击右键,在弹出的菜单中选择New Source,在弹出的对话框中选择Verilog Moudle ,在右端的File name 中输入源文件名adder4,下面各步点next,然后在弹出的源代码编辑框内输入前面所示的源代码并保存即可。(2) 功能仿真1)在sources窗口sources for中选择Behavioral Simulation;2)由Test Bench WaveForm添加激励源,如下图所示。图8-2 波形激励编辑窗口然后在p

4、rocesses窗口中点击simulater behavioral model即开始仿真,仿真结果如下:图8-3 仿真结果从图中可以验证由Verilog HDL语言设计的4位全加器的工作是正确的。由于此全加器没有时钟输入,所以不必进行User Constraints。(3)用chipscope进行在线调试这里使用的是核生成法。1) 生成chipscope核代码比较简单,这里只需要ICON和VIO这两个核即可。打开chipscope pro core generator,下面的8-4图至8-6图是ICON核的生成过程,8-7图至8-8图是VIO核的生成过程。图8-4 操作示意图8-5操作示意在o

5、utput netlist位置指向adder4所在的路径,在device family里选virtex2p器件,由于只用了VIO核,所以ICON的控制端口数设置为1。图8-6 操作示意如上图中选定HDL语言为verilog,综合工具为xilinx XST。 在接下来的VIO和生成过程中,选定VIO前的复选框进入VIO核的生成过程。路径也选择adder4所在位置,器件类型为virtex2p,然后在输入输出端口设置过程中选定异步输入端口和异步输出端口。异步输入端口宽度根据ina(4位)、inb(4位)、cin(1位)、sum(4位)、cout(1位)的总位数设定,异步输出端口根据ina(4位)、i

6、nb(4位)、cin(1位)的总位数设定。如下面两图所示。 图8-7 操作示意 图8-8 操作示意2) 添加ICON和VIO核到工程 点击fileopen,在adder4所在位置找到icon_xst_example.v和vio_xst_example.v文件并打开,将两部分的模块声明加到源代码中endmodule后面,然后分别将icon_xst_example.v,vio_xst_example.v示例中例化模块所用到的代码加到adder4.v相应的位置,并进行修改,最后得到的代码如下:module adder4(cout,sum);wire 3:wire cin;wire 35:0contr

7、ol0;wire 13:0 async_in;wire 8:0 async_out;icon i_icon ( .control0(control0) );vio i_vio .control(control0), .async_in(async_in), .async_out(async_out)assign async_in3:0=ina3:0;assign async_in7:4=inb3:assign async_in8=cin;assign async_in12:9=sum3:assign async_in13=cout;assign ina3:0=async_out3:assign

8、 inb3:0=async_out7:4;assign cin=async_out8;module icon control0 output 35:0 control0;module vio control, async_in, async_out input 35:0 control; input 13: output 8: 然后在ISE里进行综合、实现并generate programming file。3) 在chipscope里观测调试 点击analyze design using chipscope进入chipscope pro analyzer窗口,点击图标,找到前面生成的比特文件

9、,在所用器件名上右击然后选configuration将bit文件下载到板子上,然后打开vio consle窗口,在这里即可进行观测调试,调试结果如下面两图所示。图8-9 调试结果图8-10 调试结果在这里可以看出全加器的设计是正确的。8. 2 触发器实验1. 实验原理(1)主从D触发器下面是主从触发器的逻辑图及逻辑符号。 图8-11 主从触发器原理图主从结构的触发器状态改变是在时钟脉冲下降沿完成的,因而这种结构的触发器无空翻现象。 若CP下降沿前D=1,则Qn+1=1;若CP下降沿前D=0,则Qn+1=0。代码如下:module dtrigger(Q,QB,clk,D);input clk,D

10、;output Q,QB;reg Q,QB;always (negedge clk)beginQ=D;QB=Q;end(2) 主从JK触发器 主从JK触发器的逻辑图及逻辑符号如图8-12所示,其状态转换是在时钟下降沿完成的。图8-12 JK触发器原理图其真值表如下表所示。 表8-2 真值表Verilog代码如下:module jktrigger(Q,QB,J,K,clk);input J,K,clk;reg Q;assign QB=Q;always(negedge clk)case(J,K)2b00 : Q = Q;b01 := 1b0;b10 :b1;b11 := Q;default: Qb

11、x;endcase(3) JK触发器转换的D触发器真值表如下表所示。 表8-3 真值表根据上表可写出JK与D、Q的关系:J=D、K=/D图8-13 JK转D触发器原理图module jkdtrigger(cp,D,Qn,Qnb);input cp, D;output Qn,Qnb;wire J,K;jktrigger a2(Qn,Qnb,J,K,cp);not a1(K,D);assign J=D;此代码中添加了子模块jktrigger();说明程序写法有自上而下的特点。(1)熟悉 ISE9.1 开发环境,掌握工程的生成方法;(2)熟悉 SEED-XDTK XUPV2 Pro 实验环境;(3)

12、了解 Verilog HDL语言在 FPGA 中的使用;(4)了解触发器的Verilog HDL语言实现。(1)用Verilog HDL语言设计D触发器、JK触发器和JK触发器转换的D触发器,进行功能仿真验证;(1) D触发器设计1)创建工程 及设计输入在E:project目录下,新建名为dtrigger的新工程;设计输入,在源代码窗口中单击右键,在弹出的菜单中选择New Source,在弹出的对话框中选择Verilog Moudle ,在右端的File name 中输入源文件名dtrigger,下面各步点next,然后在弹出的源代码编辑框内输入D触发器的源代码并保存即可。2)功能仿真在sou

13、rces窗口sources for中选择Behavioral Simulation;由Test Bench WaveForm添加激励源,如下图所示;图8-14 波形激励编辑窗口 然后在processes窗口中点击simulater behavioral model开始仿真,仿真结果如下:图8-15仿真结果从图中可以验证由Verilog HDL语言设计的D触发器的工作是正确的。3) 添加引脚约束首先对生成的工程进行综合;添加引脚约束。双击User Constraints 下的Assign Package Pins,由于采用chipscope进行调试,因此引脚约束只需要添加时钟引脚的约束就可以了,

14、如图8-16所示。 图8-16引脚约束4) Chipscope进行调试这里也是用的核生成法,所用到的核有ICON核和VIO核。生成ICON核和VIO核核的生成过程同4位加法器里的生成过程一样。ICON的生成中文件路径指向dtrigger所在位置,器件类型为virtex2p,控制端口数为1,语言为verilog,综合工具为xilinx XST。VIO的生成中,异步输入端口宽度为3,异步输出端口数为1。添加ICON和VIO核到工程open,在dtrigger所在位置找到icon_xst_example.v和vio_xst_example.v文件并打开,将两部分的模块声明加到源代码中endmodul

15、e后面,然后分别将icon_xst_example.v,vio_xst_example.v示例中例化模块所用到的代码加到dtrigger.v相应的位置,并进行修改,最后得到的代码如下:module dtrigger(Q,QB,clk);input clk;wire D;wire 2:0async_in;wire async_out;assign async_in0=D;assign async_in1=Q;assign async_in2=QB;assign D=async_out; vio i_vio input 2: output 0:在chipscope里观测调试图标,找到前面生成的比特

16、文件,在所用器件名上右击然后选configuration将bit文件下载到板子上,然后打开vio console窗口,在这里即可进行观测调试,调试结果如下面两图所示。 图8-17调试结果 图8-18 调试结果(2) JK触发器设计1) 创建工程 及设计输入project目录下,新建名为jktrigger的新工程;设计输入,在源代码窗口中单击右键,在弹出的菜单中选择New Source,在弹出的对话框中选择Verilog Moudle ,在右端的File name 中输入源文件名jktrigger,下面各步点next,然后在弹出的源代码编辑框内输入JK触发器的源代码并保存即可,工程名称为jktr

17、igger。2) 功能仿真由Test Bench WaveForm添加激励源,如下图所示。图8-19 波形激励编辑窗口仿真结果如下图所示:图8-20仿真结果由图中可以看出JK触发器的设计是正确的。3)添加引脚约束双击User Constraints 下的Assign Package Pins,由于采用chipscope进行调试,因此引脚约束只需要添加时钟引脚的约束就可以了,如图8-21所示。 图8-21引脚约束4)Chipscope进行调试 用核生成法,所用到的核有ICON核和VIO核。 按照前面的步骤生成ICON核和VIO核并将它们添加到工程。ICON核的控制端口数为1,VIO核的异步输入端

18、口宽度为4,异步输出端口宽度为2。 最后得到的代码如下:module jktrigger(Q,QB,clk);wire J;wire K;wire 1:0async_out;assign async_in0=J;assign async_in1=K;assign async_in2=Q;assign async_in3=QB;assign J=async_out0;assign K=async_out1; input 3: output 1:在chipscope pro analyzer里的VIO console里观测到的调试结果如下面几图所示: 图8-22调试结果J=1,K=0时,将Q置1。

19、 图8-23调试结果J=0,K=0时,Q保持不变。 图8-24调试结果J=0,K=1时,将Q置0 图 8-25调试结果 图8-26 调试结果J=1,K=1时可以看到Q和QB不断地翻转。因此,从调试结果分析可知JK触发器的设计是正确的。(3)JK触发器转换为D触发器的设计 在E:project目录下,新建名为jkdtrigger的新工程; 设计输入,在源代码窗口中单击右键,在弹出的菜单中选择New Source,在弹出的对话框中选择Verilog Moudle ,在右端的File name 中输入源文件名jkdtrigger,下面各步点next,然后在弹出的源代码编辑框内输入JK触发器的源代码并

20、保存即可,工程名称为jkdtrigger。由Test Bench WaveForm添加激励源,如下图所示:图8-27波形激励编辑窗口 图8-28仿真波形从图中可以看出此设计是正确的。双击User Constraints 下的Assign Package Pins,由于采用chipscope进行调试,因此引脚约束只需要添加时钟引脚的约束就可以了,如图所示:图8-29引脚约束ICON核的控制端口数为1,VIO核的异步输入端口宽度为5,异步输出端口宽度为1。最后得到的代码如下:module jkdtrigger(cp,Qn,Qnb);input cp;wire 4:assign async_in1=J;assign async_in2=K;assign async_in3=Qn;assign async_in4=Qnb; .asy

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2