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

上传人:b****3 文档编号:6804343 上传时间:2023-05-07 格式:DOCX 页数:89 大小:1.45MB
下载 相关 举报
实验八 数字电路功能与实现Word格式文档下载.docx_第1页
第1页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第2页
第2页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第3页
第3页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第4页
第4页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第5页
第5页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第6页
第6页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第7页
第7页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第8页
第8页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第9页
第9页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第10页
第10页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第11页
第11页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第12页
第12页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第13页
第13页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第14页
第14页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第15页
第15页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第16页
第16页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第17页
第17页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第18页
第18页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第19页
第19页 / 共89页
实验八 数字电路功能与实现Word格式文档下载.docx_第20页
第20页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《实验八 数字电路功能与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验八 数字电路功能与实现Word格式文档下载.docx(89页珍藏版)》请在冰点文库上搜索。

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

0]sum;

outputcout;

input[3:

0]ina,inb;

inputcin;

assign{cout,sum}=ina+inb+cin;

endmodule

2.实验目的

(1)熟悉ISE9.1开发环境,掌握工程的生成方法;

(2)熟悉SEED-XDTKXUPV2Pro实验环境;

(3)了解VerilogHDL语言在FPGA中的使用;

(4)了解4位全加器的VerilogHDL语言实现。

3.实验内容

(1)用VerilogHDL语言设计4位全加器,进行功能仿真验证;

(2)使用chipscope-Pro生成ILA/ICON核,在线观测调试。

4.实验准备

(1)将USB下载电缆与计算机及XUPV2Pro板的J8连接好;

(2)将RS232串口线一端与计算机连接好,另一端与板卡的J11相连接;

(3)启动计算机后,将XUPV2Pro板的电源开关SW11打开到ON上。

观察XUPV2Pro板上的+2.5V,+3.3V,+1.5V的电源指示灯是否均亮,若有不亮的,请断开电源,检查电源;

5.实验步骤

(1)创建工程及设计输入

1)在E:

\project\目录下,新建名为count8的新工程;

器件族类型(DeviceFamily)选择“Virtex2P”

器件型号(Device)选“XC2VP30ff896-7”

综合工具(SynthesisTool)选“XST(VHDL/Verilog)”

仿真器(Simulator)选“ISESimulator”

2)设计输入,在源代码窗口中单击右键,在弹出的菜单中选择NewSource,在弹出的对话框中选择VerilogMoudle,在右端的Filename中输入源文件名adder4,下面各步点next,然后在弹出的源代码编辑框内输入前面所示的源代码并保存即可。

(2)功能仿真

1)在sources窗口sourcesfor中选择BehavioralSimulation;

2)由TestBenchWaveForm添加激励源,如下图所示。

图8-2波形激励编辑窗口

然后在processes窗口中点击simulaterbehavioralmodel即开始仿真,仿真结果如下:

图8-3仿真结果

从图中可以验证由VerilogHDL语言设计的4位全加器的工作是正确的。

由于此全加器没有时钟输入,所以不必进行UserConstraints。

(3)用chipscope进行在线调试

这里使用的是核生成法。

1)生成chipscope核

代码比较简单,这里只需要ICON和VIO这两个核即可。

打开chipscopeprocoregenerator,下面的8-4图至8-6图是ICON核的生成过程,8-7图至8-8图是VIO核的生成过程。

图8-4操作示意

图8-5操作示意

在outputnetlist位置指向adder4所在的路径,在devicefamily里选virtex2p器件,由于只用了VIO核,所以ICON的控制端口数设置为1。

图8-6操作示意

如上图中选定HDL语言为verilog,综合工具为xilinxXST。

在接下来的VIO和生成过程中,选定VIO前的复选框进入VIO核的生成过程。

路径也选择adder4所在位置,器件类型为virtex2p,然后在输入输出端口设置过程中选定异步输入端口和异步输出端口。

异步输入端口宽度根据ina(4位)、inb(4位)、cin(1位)、sum(4位)、cout(1位)的总位数设定,异步输出端口根据ina(4位)、inb(4位)、cin(1位)的总位数设定。

如下面两图所示。

图8-7操作示意

图8-8操作示意

2)添加ICON和VIO核到工程

点击file>

open,在adder4所在位置找到icon_xst_example.v和vio_xst_example.v文件并打开,将两部分的模块声明加到源代码中endmodule后面,然后分别将icon_xst_example.v,vio_xst_example.v示例中例化模块所用到的代码加到adder4.v相应的位置,并进行修改,最后得到的代码如下:

moduleadder4(cout,sum);

wire[3:

wirecin;

wire[35:

0]control0;

wire[13:

0]async_in;

wire[8:

0]async_out;

iconi_icon

.control0(control0)

);

vioi_vio

.control(control0),

.async_in(async_in),

.async_out(async_out)

assignasync_in[3:

0]=ina[3:

0];

assignasync_in[7:

4]=inb[3:

assignasync_in[8]=cin;

assignasync_in[12:

9]=sum[3:

assignasync_in[13]=cout;

assignina[3:

0]=async_out[3:

assigninb[3:

0]=async_out[7:

4];

assigncin=async_out[8];

moduleicon

control0

output[35:

0]control0;

modulevio

control,

async_in,

async_out

input[35:

0]control;

input[13:

output[8:

然后在ISE里进行综合、实现并generateprogrammingfile。

3)在chipscope里观测调试

点击analyzedesignusingchipscope进入chipscopeproanalyzer窗口,点击

图标,找到前面生成的比特文件,在所用器件名上右击然后选configuration将bit文件下载到板子上,然后打开vioconsle窗口,在这里即可进行观测调试,调试结果如下面两图所示。

图8-9调试结果

图8-10调试结果

在这里可以看出全加器的设计是正确的。

8.2触发器实验

1.实验原理

(1)主从D触发器

下面是主从触发器的逻辑图及逻辑符号。

 

图8-11主从触发器原理图

主从结构的触发器状态改变是在时钟脉冲下降沿完成的,因而这种结构的触发器无空翻现象。

若CP下降沿前D=1,则Qn+1=1;

若CP下降沿前D=0,则Qn+1=0。

代码如下:

moduledtrigger(Q,QB,clk,D);

inputclk,D;

outputQ,QB;

regQ,QB;

always@(negedgeclk)

begin

Q<

=D;

QB=~Q;

end

(2)主从JK触发器

主从JK触发器的逻辑图及逻辑符号如图8-12所示,其状态转换是在时钟下降沿完成的。

图8-12JK触发器原理图

其真值表如下表所示。

表8-2真值表

Verilog代码如下:

modulejktrigger(Q,QB,J,K,clk);

inputJ,K,clk;

regQ;

assignQB=~Q;

always@(negedgeclk)

case({J,K})

2'

b00:

Q<

=Q;

b01:

=1'

b0;

b10:

b1;

b11:

=~Q;

default:

Q<

bx;

endcase

(3)JK触发器转换的D触发器

真值表如下表所示。

表8-3真值表

根据上表可写出JK与D、Q的关系:

J=D、K=/D

图8-13JK转D触发器原理图

modulejkdtrigger(cp,D,Qn,Qnb);

inputcp,D;

outputQn,Qnb;

wireJ,K;

jktriggera2(Qn,Qnb,J,K,cp);

nota1(K,D);

assignJ=D;

此代码中添加了子模块jktrigger();

说明程序写法有自上而下的特点。

(1)熟悉ISE9.1开发环境,掌握工程的生成方法;

(2)熟悉SEED-XDTKXUPV2Pro实验环境;

(3)了解VerilogHDL语言在FPGA中的使用;

(4)了解触发器的VerilogHDL语言实现。

(1)用VerilogHDL语言设计D触发器、JK触发器和JK触发器转换的D触发器,进行功能仿真验证;

(1)D触发器设计

1)创建工程及设计输入

◆在E:

\project\目录下,新建名为dtrigger的新工程;

◆设计输入,在源代码窗口中单击右键,在弹出的菜单中选择NewSource,在弹出的对话框中选择VerilogMoudle,在右端的Filename中输入源文件名dtrigger,下面各步点next,然后在弹出的源代码编辑框内输入D触发器的源代码并保存即可。

2)功能仿真

◆在sources窗口sourcesfor中选择BehavioralSimulation;

◆由TestBenchWaveForm添加激励源,如下图所示;

图8-14波形激励编辑窗口

然后在processes窗口中点击simulaterbehavioralmodel开始仿真,仿真结果如下:

图8-15仿真结果

从图中可以验证由VerilogHDL语言设计的D触发器的工作是正确的。

3)添加引脚约束

◆首先对生成的工程进行综合;

◆添加引脚约束。

双击UserConstraints下的AssignPackagePins,由于采用chipscope进行调试,因此引脚约束只需要添加时钟引脚的约束就可以了,如图8-16所示。

图8-16引脚约束

4)Chipscope进行调试

这里也是用的核生成法,所用到的核有ICON核和VIO核。

◆生成ICON核和VIO核

核的生成过程同4位加法器里的生成过程一样。

ICON的生成中文件路径指向dtrigger所在位置,器件类型为virtex2p,控制端口数为1,语言为verilog,综合工具为xilinxXST。

VIO的生成中,异步输入端口宽度为3,异步输出端口数为1。

◆添加ICON和VIO核到工程

open,在dtrigger所在位置找到icon_xst_example.v和vio_xst_example.v文件并打开,将两部分的模块声明加到源代码中endmodule后面,然后分别将icon_xst_example.v,vio_xst_example.v示例中例化模块所用到的代码加到dtrigger.v相应的位置,并进行修改,最后得到的代码如下:

moduledtrigger(Q,QB,clk);

inputclk;

wireD;

wire[2:

0]async_in;

wireasync_out;

assignasync_in[0]=D;

assignasync_in[1]=Q;

assignasync_in[2]=QB;

assignD=async_out;

vioi_vio

input[2:

output[0:

◆在chipscope里观测调试

图标,找到前面生成的比特文件,在所用器件名上右击然后选configuration将bit文件下载到板子上,然后打开vioconsole窗口,在这里即可进行观测调试,调试结果如下面两图所示。

图8-17调试结果

图8-18调试结果

(2)JK触发器设计

1)创建工程及设计输入

\project\目录下,新建名为jktrigger的新工程;

◆设计输入,在源代码窗口中单击右键,在弹出的菜单中选择NewSource,在弹出的对话框中选择VerilogMoudle,在右端的Filename中输入源文件名jktrigger,下面各步点next,然后在弹出的源代码编辑框内输入JK触发器的源代码并保存即可,工程名称为jktrigger。

2)功能仿真

由TestBenchWaveForm添加激励源,如下图所示。

图8-19波形激励编辑窗口

仿真结果如下图所示:

图8-20仿真结果

由图中可以看出JK触发器的设计是正确的。

3)添加引脚约束

双击UserConstraints下的AssignPackagePins,由于采用chipscope进行调试,因此引脚约束只需要添加时钟引脚的约束就可以了,如图8-21所示。

图8-21引脚约束

4)Chipscope进行调试

用核生成法,所用到的核有ICON核和VIO核。

按照前面的步骤生成ICON核和VIO核并将它们添加到工程。

ICON核的控制端口数为1,VIO核的异步输入端口宽度为4,异步输出端口宽度为2。

最后得到的代码如下:

modulejktrigger(Q,QB,clk);

wireJ;

wireK;

wire[1:

0]async_out;

assignasync_in[0]=J;

assignasync_in[1]=K;

assignasync_in[2]=Q;

assignasync_in[3]=QB;

assignJ=async_out[0];

assignK=async_out[1];

input[3:

output[1:

在chipscopeproanalyzer里的VIOconsole里观测到的调试结果如下面几图所示:

图8-22调试结果

J=1,K=0时,将Q置1。

图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的新工程;

◆设计输入,在源代码窗口中单击右键,在弹出的菜单中选择NewSource,在弹出的对话框中选择VerilogMoudle,在右端的Filename中输入源文件名jkdtrigger,

下面各步点next,然后在弹出的源代码编辑框内输入JK触发器的源代码并保存即可,工程名称为jkdtrigger。

由TestBenchWaveForm添加激励源,如下图所示:

图8-27波形激励编辑窗口

图8-28仿真波形

从图中可以看出此设计是正确的。

双击UserConstraints下的AssignPackagePins,由于采用chipscope进行调试,因此引脚约束只需要添加时钟引脚的约束就可以了,如图所示:

图8-29引脚约束

ICON核的控制端口数为1,VIO核的异步输入端口宽度为5,异步输出端口宽度为1。

最后得到的代码如下:

modulejkdtrigger(cp,Qn,Qnb);

inputcp;

wire[4:

assignasync_in[1]=J;

assignasync_in[2]=K;

assignasync_in[3]=Qn;

assignasync_in[4]=Qnb;

.asy

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

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

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