武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx

上传人:b****8 文档编号:30246394 上传时间:2023-08-13 格式:DOCX 页数:19 大小:217.95KB
下载 相关 举报
武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx_第1页
第1页 / 共19页
武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx_第2页
第2页 / 共19页
武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx_第3页
第3页 / 共19页
武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx_第4页
第4页 / 共19页
武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx

《武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx》由会员分享,可在线阅读,更多相关《武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx(19页珍藏版)》请在冰豆网上搜索。

武汉理工大学EDA实验原理图输入法输入的4位全加器和Verilog HDL语言输入的16进制频率计.docx

武汉理工大学EDA实验原理图输入法输入的4位全加器和VerilogHDL语言输入的16进制频率计

序号(学号):

0121009310106

 

学生实验报告书

 

实验类别

EDA实验

学院

信息工程学院

专业

通信工程

班级

信息SY1001班

姓名

龙涛

指导教师

聂明新

 

2012

12

30

实验课程名称:

EDA技术与应用

实验项目名称

原理图输入法设计4位全加器实验

实验成绩

实验者

龙涛

专业班级

信息sy1001

组别

04

同组者

实验日期

2012.12.30

一、实验目的

1.进一步加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。

2.熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握利用EDA软件进行原理图输入方式设计的详细流程。

二、实验内容

实验内容1:

完成半加器和1位全加器的设计,包括用原理图输入,编译,综合,适配,仿真,实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。

实验内容2:

建立一个更高层次的原理图,利用以上获得的1位全加器构成4位全加器,并完成编译,综合,适配,仿真和硬件测试。

三、实验仪器

1.计算器及操作系统

2.QuartusII软件

四、实验原理

1、半加器描述

半加器真值表如表一所示:

a

b

so

Co

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

表1半加器h_adder真值表

co表示输出进位位,输入a和b分别表示加数和被加数。

so为输出和,其功能可用布尔代数式表示为:

因此1个半加器可以由一个与门,一个非门和一个同或门构成,然后用QuartusII软件画出电路图如图1所示

 

图1半加器h_adder电路图

2、1位全加器描述

一位全加器可以由两个半加器和一个或门连接而成,因而可以调用半加器元件来设计1位全加器。

 

图21位全加器电路图

3、4位全加器设计描述

一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。

首先根据半加器的布尔代数式应用基本逻辑门设计半全加器,而后仿真验证半加器设计,准确无误后生成元件,供一位全加器设计用。

再调用半加器元件设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。

将4个1位全加器级联构成四位全加器。

五、实验步骤

1、为本项工程设计建立文件夹:

文件夹取名为adder,路径为d:

\adder。

2、建立原理图文件工程和仿真

原理图编辑输入流程如下:

1)打开原理图编辑窗。

打开QuartusⅡ,选菜单File→new,选择原理图文件编辑输入项BlockDiagram/SchematicFile,按OK键。

2)建立一个初始化原理图。

在编辑窗口点击右键,在弹出菜单中选择输入元件项Insert→Symbol,将元件调入原理图编辑窗口中

3)原理图文件存盘。

选择菜单File→SaveAs,将此原理图存于刚才建立的目录d:

\adder中,取名为h_adder.bdf。

4)建立原理图文件为顶层设计工程。

然后将此文件h_adder.bdf设定为工程。

5)绘制半加器原理图。

将元件放入原理图编辑窗口,按图1接好电路。

6)仿真测试半加器。

全程编译后,打开波形编辑器。

选择File→new命令,在New窗口中选择VectorWaveformFile选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

3、将设计项目(一位半加器)设置成可调用的元件

为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成课调用的底层元件。

在半加器原理图文件处于打开的情况下,选择菜单File→Create/Update→CreateSymbolFilesforCurrentFile,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。

图3半加器示意图

4、设计全加器顶层文件

为了建立全加器顶层文件,必须打开一个原理图编辑窗口,方法同前。

1)选择菜单File→new→BlockDiagram/SchematicFile,将其设置成新的工程,命名为f_adder.bdf。

2)在打开的原理图编辑窗口中,双击鼠标,选择Project下先前生成的元件h_adder和若干元器件,按图2连接好一位全加器电路图。

3)仿真测试全加器。

全程编译后,打开波形编辑器。

选择File→new命令,在New窗口中选择VectorWaveformFile选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

5、将设计项目(一位全加器)设置成可调用的元件

为了构成4位全加器的顶层设计,必须将以上设计的全加器f_adder.bdf设置成课调用的底层元件。

在全加器原理图文件处于打开的情况下,选择菜单File→Create/Update→CreateSymbolFilesforCurrentFile,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。

图4一位全加器示意图

6、四位全加器设计

为了建立4位全加器顶层文件,必须再打开一个原理图编辑窗口,方法同前。

1)选择菜单File→new→BlockDiagram/SchematicFile,将其设置成新的工程,命名为adder4b.bdf。

2)在打开的原理图编辑窗口中,双击鼠标,选择Project下先前生成的元件f_adder和若干元器件,连接好4位全加器电路图。

3)仿真测试全加器。

全程编译后,打开波形编辑器。

选择File→new命令,在New窗口中选择VectorWaveformFile选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

六、实验结果与分析

1.半加器仿真波形

图5半加器仿真波形

由仿真波形分析可得,当a,b输入全0时,co=0,so=0;当a=0,b=1时,co=0,so=1;当a=1,b=0时,co=0,s0=1;当a,b全1时,co=1,so=0。

仿真结果与半加器真值表表1相同,半加器设计成功。

2.一位全加器的仿真波形图

图6一位全加器的RTL图

图7一位全加器的仿真波形图

由仿真波形分析可得,当ain,bin,cin为全0时,cout=0,sum=0;当ain=0,bin=0,cin=1时,cout=0;sum=1;当ain=0,bin=1,cin=0时,cout=0;sum=1;当ain=0,bin=1,cin=1时,cout=1;sum=0;当ain=1,bin=0,cin=0时,cout=0;sum=1;当ain=1,bin=0,cin=1时,cout=1;sum=0;当ain=1,bin=1,cin=0时,cout=1;sum=0;当ain,bin,cin为全1时,cout=1,sum=1。

由此可得仿真波形与实际一位全加器输出一致。

3.四位全加器仿真波形

图8四位全加器RTL

图9四位全加器仿真波形

由仿真波形分析可得,当A0,A1,A2,A3,B0,B1,B2,B3,C0为全0时,COUT=0,D0=0,D1=0,D2=0,D3=0;当A0=0,A1=0,A2=0,A3=0,B0=0,B1=0,B2=0,B3=0,C0=1时,COUT=0,D0=1,D1=0,D2=0,D3=0;当A0=0,A1=0,A2=0,A3=0,B0=0,B1=1,B2=0,B3=0,C0=1时,COUT=0,D0=0,D1=1,D2=0,D3=0;当A0=0,A1=0,A2=0,A3=0,B0=1,B1=0,B2=1,B3=0,C0=1时,COUT=0,D0=0,D1=1,D2=1,D3=0;其他输入分析同理,只分析前4组。

可得,仿真波形结果与实际四位全加器输出结果相同。

 

附录

四位全加器原理图:

 

 

设计四位全加器流程图:

 

 

实验课程名称:

EDA技术与应用

实验项目名称

16进制频率计实验

实验成绩

实验者

龙涛

专业班级

信息sy1001

组别

04

同组者

实验日期

2012.12.30

一、实验目的

1.掌握计数器的基本原理,进一步加深对频率计数器工作原理及电路组成的理解与掌握。

2.熟悉VerilogHDL文本输入法的使用方法,掌握更复杂的EDA设计技术流程和数字系统设计方法,完成8位十六进制频率计的设计。

二、实验仪器

1.计算机及操作系统

2.QuartusII软件

三、实验原理

1.根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s的输入信号脉冲计数允许的信号;一秒结束后,计数器被锁入锁存器,计数器清零,为下一测频计数周期做好准备。

测频控制信号可以由一个独立的发生器来产生。

2.测频电路的使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计中的32位二进制计数器的ENABL使能进行同步控制。

当CNT_EN高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进各锁存器中。

设置锁存器的好处是数据显示稳定,不会由于周期性的清零信号而不断闪烁。

锁存信号后,必须有清零信号RST_CNT对计数器进行清零,为下一秒的计数操作准备。

四、实验内容

1.测频控制电路:

设计频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。

控制时钟信号clk周期取为2ms,经过1000分频后便可以产生周期为2s的时钟CNT_EN,此作为计数闸门信号。

当CNT_EN为高电平时,允许计数;当CNT_EN由高电平变为低电平(下降沿到来)时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次CNT_EN上升沿到来之前产生清零信号RST_CNT,将计数器清零,为下次计数作准备。

2.32位锁存器:

设置锁存器的作用是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

锁存器的位数应跟计数器完全一样。

3.计数器:

计数器以待测信号作为时钟,清零信号CLR到来时,异步清零;CNT_EN为高电平时开始计数。

五、实验步骤

1.建立工作库文件夹和编辑设计文件

1)新建一个文件夹。

首先利用Windows资源管理器,新建一个文件夹。

2)输入源程序。

打开QuartusⅡ,选择File→new命令,在New窗口中的DesignFile栏选择编辑文件的语言类型,这里选择VerilogHDLFile选项。

然后在VerilogHDL文本编译窗口中输入以下VerilogHDL程序。

3)文件存盘。

2.创建工程

选择File→newProjectWizard命令建立工程,将设计文件加入工程中。

3.编译前设置

在对工程进行编译处理前必须给予必要的设置和约束。

4.全程编译

选择Processing→StartCompilation命令,启动全程编译。

5.时序仿真

打开波形编辑器,选择File→new命令,在New窗口中选择VectorWaveformFile选项。

设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。

①测频控制电路程序如下:

modulediv(CNT_EN,CLK,LOAD,RST_CNT);

inputCLK;

outputCNT_EN,LOAD,RST_CNT;

regCNT_EN,LOAD,RST_CNT;

integeri,j;

always@(posedgeCLK)

begin

if(i==499)

beginCNT_EN=~CNT_EN;LOAD=~LOAD;RST_CNT=~RST_CNT;i=0;end

elsei=i+1;

end

endmodule

 

 

图1测频控制电路的RTL图

图2测频控制电路元件图

②32位锁存器程序如下:

modulelocker(LOCK,DIN,QOUT);

inputLOCK;//锁存脉冲,下降沿有效。

input[31:

0]DIN;//锁存值输入。

output[31:

0]QOUT;//锁存值。

reg[31:

0]QOUT;

always@(negedgeLOCK)

begin

if(!

LOCK)

QOUT=DIN;

else

QOUT=QOUT;

end

endmodule

图332位锁存器的RTL图

图432位锁存器元器件图

③计数器程序如下:

modulecounter(CLR,F_IN,q,ENABL);

inputCLR,F_IN,ENABL;

output[31:

0]q;

reg[31:

0]q;

always@(posedgeF_IN)

begin

if(!

CLR)q[31:

0]=0;

elseif(ENABL)

begin

if(q[31:

0]==32'Hffffffff)q[31:

0]=0;

elseq[31:

0]=q[31:

0]+1;

end

else

q=0;

end

endmodule

 

图532位计数器的元器件图

4频率计顶层文件设计

频率计顶层设计用原理图的输入方式,前面已经创建了div,counter,locker三个底层文件,调用它们创建频率计顶层文件的原理图。

 

图68位十六进制频率计RTL图

六.实验结果及分析

1.测频控制电路仿真波形:

图7测控控制电路时序仿真图

由仿真波形分可得,当系统时钟CLK设定为2ms,经过1000分频后便可以产生周期为2s的闸门信号CNT_EN,锁存信号LOAD,清零信号CLR。

仿真波形输出与实际要求相符合。

2.32位锁存器仿真波形:

图832位锁存器的时序仿真图

由仿真波形分析可得,采用周期为2s的LOCK信号的下降沿对计数模块的计数结果进行锁存,在仿真中LOCK信号第一个高电平期间,DIN=277FEDD4,在LOCK信号下降沿到来时,QOUT输出为277FEDD4,可见DIN信号锁存到了QOUT端。

LOCK信号的第二个高电平期间分析同理。

可见,在锁存模块中,采用DIN信号的下降沿对计数模块的计数结果进行锁存,锁存时间由LOCK的周期确定,在仿真中将输入值DIN设定为随机值,LOCK设定为周期为2s的方波,QOUT为锁存结果输出端,输出端结果在LOCK下降沿到来时刻改变,其余时刻保持为锁存状态满足实际要求。

3.计数器仿真波形:

图932位计数器的时序仿真图

由仿真波形分析可得,F_IN输入周期为40ms的方波,当CLR信号和ENABL信号都为持续时间为1s的高电平期间,计数器开始计数,q的输出为十进制的25。

可见,1s/40ms=25,符合实际要求。

4频率计顶层文件仿真波形:

图108位十六进制频率计时序仿真波形

由仿真波形分析可得,当CLK输入周期为2ms的方波,F_IN输入周期为40ms的方波时,QOUT输出为25,这与前面设计计数器时所得到的值一致,并通过锁存器带有锁存功能,直接显示25,这与实际要求相符合。

 

附录

8位16进制电路原理图:

 

设计8位16进制流程图:

 

思考题

1.简述Quartus的设计流程。

答:

1.新建文件夹;2.新建源程序(VerilogHDLFile)或原理图(SchematicFile);

3.保存文件;4.创建工程并添加源程序或原理图;5.选择目标芯片;6.设置EDA工具;7.结束设置;8.修改,编译工程;9.时序仿真。

2.功能仿真与时序仿真有什么不同?

答:

功能仿真就是在代码写完后,测试要实现的功能是否能正常工作。

并不考虑底层硬件的实现和延时等影响。

通过功能仿真,可以验证整个系统的逻辑功能是否正确。

时序仿真是在将设计适配到芯片后的仿真验证方式。

时序仿真在严格的仿真时序模型下,模拟芯片的实际运作。

仿真时间模型将最基本的门级延时计算在内,从而可有效的分析出设计中得竞争和冒险。

经过时序仿真验证后的设计基本上与实际电路是一致的。

3.还有什么其他方法实现频率计功能?

答:

方案一:

可以用LPM模块取代以上模块程序段,完成同样的设计任务。

方案二:

基于单片机实现八位十进制频率计字功能,利用AT89C51的内部定时计数器来对外部输入信号进行计数,从而达到测频的目的。

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

当前位置:首页 > 经管营销 > 金融投资

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

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