南昌大学eda实验报告Word文档下载推荐.doc

上传人:b****2 文档编号:13628820 上传时间:2022-10-12 格式:DOC 页数:39 大小:2.12MB
下载 相关 举报
南昌大学eda实验报告Word文档下载推荐.doc_第1页
第1页 / 共39页
南昌大学eda实验报告Word文档下载推荐.doc_第2页
第2页 / 共39页
南昌大学eda实验报告Word文档下载推荐.doc_第3页
第3页 / 共39页
南昌大学eda实验报告Word文档下载推荐.doc_第4页
第4页 / 共39页
南昌大学eda实验报告Word文档下载推荐.doc_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

南昌大学eda实验报告Word文档下载推荐.doc

《南昌大学eda实验报告Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《南昌大学eda实验报告Word文档下载推荐.doc(39页珍藏版)》请在冰豆网上搜索。

南昌大学eda实验报告Word文档下载推荐.doc

(一)实验目的

1、熟悉建立文件夹和建立工程的整个过程。

2、学会建立波形文件。

3、学会将文件下载到板子上。

(二)设计要求

完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下:

1、利用书上的程序,完成实验目的,实现两个一位二进制数的相加,并将进位输出。

(三)主要仪器设备

1、微机 1台

2、QuartusII集成开发软件 1套

3、EDA实验装置 1套

(四)实验思路

由于要用到例化语句,所以需要将文件都放在一个文件夹里然后创建工程。

选择文件夹和名称。

添加文件

选择实验室用的芯片

选择仿真工具

半加器真值表如下

A

B

SO

CO

1

其中A和B为输入信号,SO为和值输出,CO为进位输出。

程序如下。

modulebanjia(A,B,SO,CO);

inputA,B;

outputSO,CO;

assignSO=A^B;

assignCO=A&

B;

Endmodule

由真值表可得输入信号A和B异或可作为和值输出,相与可作为进位输出。

全加器真值表如下

Ain

Bin

Cin

Cout

Sum

ain和bin为输入信号,cin为进位信号与ain和bin一起相加,cout为进位出书,sum为和值输出。

modulequanjia(ain,bin,cin,cout,sum);

outputcout,sum;

inputain,bin,cin;

wirenet1,net2,net3;

banjiaU1(ain,bin,net1,net2);

banjiaU2(.A(net1),.SO(sum),.B(cin),.CO(net3));

orU3(cout,net2,net3);

这里用了例化语句调用了一个半加器的模块让ain与bin通过半加器的相加之后的和值net1作为一个输入信号再与进位信号cin相加作为和值sum,ain与bin相加产生的进位信号net2和ain与bin的和值net1与cin相加产生的进位信号net3相或作为整体的进位输出cout,便可完成真值表的要求。

(五)时序仿真

添加引脚

然后对输入信号进行赋值,赋值为周期性信号。

编译后保存。

仿真后效果如下

将程序烧入板子如下

(六)实验总结

因为这个是第一次进EDA实验室,对软件硬件都不了解。

遇到很多的简单问题,也就是操作上的不熟练。

对照书本上的步骤一步一步操作,才能完成。

真应该加强动手能力。

通过这次实验理解了全加器的原理和例化语句的使用,初步对EDA实验产生了兴趣。

二、模可变计数器设计

1、进一步熟悉实验装置和QuartusⅡ软件的使用;

2、进一步熟悉和掌握EDA设计流程;

3、学习简单组合、时序电路的EDA设计;

4、学习计数器中二进制码到BCD码的转换技巧;

5、学习实验装置上数码管的输出方法。

1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定)的数,没按下时模为100-199之间(具体数值自行确定)的数;

2、计数结果用三位数码管十进制显示。

2、QuartusII集成开发软件 1套

3、EDA实验装置 1套

总体程序如下

modulejishuqi(CLK,rst,M,SG,en,q,d);

inputCLK,rst,en;

inputM;

outputSG;

reg[7:

0]cnt;

regclk1;

0]SG;

regsel;

outputreg[11:

0]q;

reg[11:

0]model;

reg[3:

0]a;

outputregd;

wire[3:

0]gw,sw,bw;

assigngw[3:

0]=q[3:

0];

assignsw[3:

0]=q[7:

4];

assignbw[3:

0]=q[11:

8];

always@(M)

if(M)model=12'

b000000110000;

elsemodel=12'

b000100000000;

always@(posedgeCLK)

begin

cnt=cnt+1;

if(cnt==200)

clk1=1'

b1;

cnt=0;

end

elseclk1=1'

b0;

if(sel<

2)sel=sel+1;

elsesel=0;

end

always@(posedgeCLKornegedgerst)

begin

if(!

rst)

q=0;

else

if(en)begin

if(q<

model)

begin

if(gw==9)beginq=q+7;

if(sw==9)q=q+96;

end

elseq=q+1;

end

elseq=0;

end

end

always@(q)

begin

if(q<

model)d<

=0;

elsed<

=1;

always@(sel)

begin

case(sel)

0:

a=bw;

1:

a=sw;

2:

a=gw;

default:

a=0;

endcase

case(a)

0:

SG<

=8'

b00111111;

1:

b00000110;

2:

b01011011;

3:

b01001111;

4:

b01100110;

5:

b01101101;

6:

b01111101;

7:

b00000111;

8:

b01111111;

9:

b01101111;

default:

SG=8'

b11111111;

endcase

end

endmodule

分频模块

分频模块由时钟频率的分频作为计数脉冲,每200个系统脉冲有一个技术脉冲,同时可以利用系统脉冲进行循环选择SEL来进行循环扫码。

程序如下

always@(posedgeCLK)

选择模块由M选择,M为1时模是30,M为0时模为100。

always@(M)

计数模块

计数模块如下,由于q为16进制数,我们需要的输出为BCD码,故进行调整。

平常时q来一个脉冲加1,当加到个位为9时,也就是1001,将其加7变为16也就是0,实现了个位由9到0的BCD计数,同时也会向十位进1。

当十位和个位同时,为9时,q位加96也就是十位加6,再加上个位向十位进的1就是加7,十位会清零同时个位也会清零,同时向百位进1,实现了正常的十进制BCD码计数。

Rst则为清零信号,en为使能信号。

always@(posedgeCLKornegedgerst)

End

当计数到顶后有个标志位d标志是否计到顶。

always@(q)

循环扫码模块如下,由于sel的变化频率和系统时钟相同,所以肉眼辨别不出来在跳动,可以通过其分别选择数码管并将个位十位百位呈现在数码管上,同时配有译码程序。

always@(sel)

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

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1