数字规律电路设计试验教案_第1页
数字规律电路设计试验教案_第2页
数字规律电路设计试验教案_第3页
数字规律电路设计试验教案_第4页
数字规律电路设计试验教案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——数字规律电路设计试验教案数字规律电路设计试验教案赵蕙

试验四四位全加器

试验要求

使用EDA设计开发工具QuartusII,以VHD语言方式设计实现组合规律电路四位全加器。

试验原理

四位全加器可由一位全加器以串行方式连接而成,更为高效的方式是直接用VHDL语言实现。

试验步骤

1.新建工程

参考试验二指导,,工程名和顶层模块名均设为fadder_4。

2.设计输入

点击菜单项File->new?,这次试验我们使用VHDL描述语言方式设计电路,所以选择新建一个“VHDLFile〞文件,点击“OK〞按钮,开启代码编辑器,将下面的代码输入空白编辑区,输入完成后,保存文件,文件名与实体名一致(本例为:fadder_4.vhd)。libraryieee;useieee.std_logic_1164.all;useieee.numeric_std.all;entityfadder_4isarchitecturebehaveoffadder_4isbeginresultnew?,这次试验我们使用状态图方式设计电路,所以选择新建一个“StateMachineFile〞文件,点击“OK〞按钮,开启状态图编辑器,使用工具栏完成状态l图的编辑。

下图工具栏上的按钮作用分别是“分开窗口切换〞、“全屏幕切换〞、“选择〞、“放大缩小〞、“查找〞、“状态工具〞、“条件转换工具〞、“状态表工具〞、“状态机生成向导〞、“插入输入端口〞、“插入输出端口〞、“条件转换等式显示〞、“生成HDL文件工具〞、“橡皮筋工具〞。

完成后的序列检测状态图如下,保存文件,本例为sequencer.smf。。

状态图完成后,使用“生成HDL文件工具〞

将状态图转换成HDL代码,在弹出的对话

框中可以选择生成VerilogHDL、VHDL或SystemVerilog,本例选择生成VHDL代码,一个sequencer.vhd文件会自动生成并保存在你的工程文件夹里。

第23页共37页

数字规律电路设计试验教案_指导教师赵蕙

3.规律综合

参考试验二指导。

4.功能仿真

参考试验二指导,创立仿真波形文件,根据生成的仿真波形图,分析结果是否正确。

5.布局布线

用一个开关K1(引脚号:A12)作为序列检测器的switch输入,用一个发光管D1(引脚号:A0)作为序列检测器的输出lamp,时钟信号可以使用开发平台的可调数字时钟模块CLK(引脚号:J4),但是由于试验平台上没有单拍时钟,所以本例把时钟信号到开关K2(引脚号:B12),通过拨动开关K2从0->1->0的变化,来模拟时钟。

详细引脚对应关系见附录。使用菜单项Assignment->Pins进行引脚分派,完成后点击对设计进行全编译。

按钮,

6.编程

参考试验二指导。

7.验证

试验报告要求

1.有限状态机分为Moore状态机和Mealy状态机,简述两者的特点,分析本例的序列检测器状

态机应当属于哪一种?

2.设计一个1010序列检测器,画出状态图。

第24页共37页

数字规律电路设计试验教案赵蕙

试验六计数器和分频器

试验要求

层次化设计方法,使用VHDL方式设计实现10进制加法计数器。要求计数器以1秒钟的频率计数,具有同步计数,异步清零,同步预置数功能,要求计数值同时在八个数码管上显示。主时钟选择1KHz的频率,同时作为数码管动态扫描时钟,1KHz主时钟分频后作为10进制加法器的计数时钟。

试验原理

计数器是最常见的时序规律电路,从微处理器的地址发生器到频率计都需要用到计数器。分频器与计数器十分类似,时序电路设计中需要各种各样的分频器来获得不同频率的时钟,其中以整数分频器最为常见,整数分频可以简单地使用模n计数器实现,即随驱动时钟跳动n次后就输出一个进位脉冲,然后马上被清零或置位,再开始新一轮循环的计数器。

试验步骤

1.新建工程

参考试验二指导,工程名和顶层模块名均设为counter_TOP。

2.设计输入

1)计数器

点击菜单项File->new?,新建一个“VHDLFile〞文件,点击“OK〞按钮,开启代码编辑器,将下面的代码输入空白编辑区,输入完成后,保存文件,文件名与实体名一致(本例为:counter.vhd)。计数器模块采用参数化设计,从MIN_COUNT开始加1计数,计到MAX_COUNT后,重新回到MIN_COUNT开始计数。使用参数化设计的最大特点在于它可以被便利地修改,所以常用来建模一些需要调整的数据,以便在实例化模块时根据需要进行配置。

libraryieee;useieee.std_logic_1164.all;useieee.numeric_std.all;entitycounterisgeneric(MIN_COUNT:natural:=0;MAX_COUNT:natural:=9);port(clk:instd_logic;reset:instd_logic;load:instd_logic;enable:instd_logic;d:inintegerrangeMIN_COUNTtoMAX_COUNT;q:outintegerrangeMIN_COUNTtoMAX_COUNTendentity;);第25页共37页

数字规律电路设计试验教案赵蕙

试验一半加器和全加器I

试验平台试验要求

使用TTL小规模集成电路芯片74LS00搭建半加器电路和全加器电路,电路的输入接试验平台开关,电路输出接试验平台的发光管。希望同学们能够通过试验把握使用基本门电路设计实现数字电路的方法。

试验原理

在数字电路中,门电路就是用来实现基本规律关系的电路,譬如这个试验中的半加器和全加器。最基本的门电路是与门、或门和非门,由这些门可以组合成其它的规律电路。门电路最初由分立元件组成,集成电路出现后,我们现在使用的门电路都是集成门电路。

半加器:完成两个一位二进制数的相加而求得“和〞及“进位〞。

全加器:当多位二进制数相加时,高位的相加运算除了要将本位的加数和被加数相加以外,还要考虑低位是否有向该位的进位。全加器完成将两个一位的二进制数相加,并考虑低位来的进位,相当于三个一位二进制数相加的电路。

试验步骤

1.设计

根据半加器和全加器列出真值表,写出输出函数,由于试验要求使用“与非门〞实现,将输出函数转换为“与非门〞形式,画出访用与非门实现半加器和全加器的电路图。

useieee.std_logic_1164.all;entityDecode4_7isport(switch:instd_logic_vector(3downto0);--四位输入信号ledag:outstd_logic_vector(6downto0);--8个数码管的7段输出sel:outstd_logic_vector(2downto0)--8个数码管的位选输出);endDecode4_7;architecturebehaveofDecode4_7isbeginselSetasTop-LevelEntitey可以将当前正开启的文件设置为顶层文件;方法二:使用菜单项Assignmengs->Settings…,在开启的设置对话框中,选择左边最上面的“General〞,在右边的Top-Levelentity编辑框中选择设计顶层。

4.布局布线

参考附录FPGA引脚对应关系,自己完成引脚的选择和约束。

5.编程6.验证

附:VHDL知识点

4.元件(模块)声明

结构化模型中所使用的元件事先已经定义过,在使用之前必需首先声明。元件声明格式如下:COMPONENT元件名;PORT(信号列表);ENDCOMPONENT5.元件例化元件例化语句是要对所适用的元件与当前设计实体中其他组件及端口信号的连接方法加以说明,元件例化的格式如下:元件实例:元件名genericmap(参数)portmap(端口信号1=>信号名1,??)这里使用的端口信号就是实体中port部分使用的端口名,而信号名则是加到当前元件的实际信号的名称。通过端口信号映像portmap,指明白元件和外部端口信号、元件和元件中间的连接。

第30页共37页

数字规律电路设计试验教案赵蕙

试验七数字钟

试验要求

使用VHDL语言,利用层次化设计方法,设计实现具有时、分、秒计时的简易数字钟。

试验原理

分计时和秒计时可以设计60进制计数器实现,小时计时可以设计24进制计数器实现。秒计时器从0开始计数满59时,回零,此时分计时器计数一次;分计时计数器从0开始计数满59时,回零,此时小时计数器计数一次,从0计到23时,回零。将秒、分、时计数器的计数值,在数码管上显示出来。

试验步骤

1.新建工程2.设计输入

1)参数化方法设计任意进制计数器

参考试验六计数器修改设计,在计数到最大值时输出计数满标志。2)数码管动态扫描电路参考试验六。3)顶层模块

计数器模块实例化6次,每次参数不同,实例成3个10进制计数器(时钟计数个位,分钟计数个位,秒钟计数个位),1个二进制计数器(时钟计数十位),2个6进制计数器(秒钟计数十位,分钟计数十位)。

秒钟个位计数器计满标志作为秒计十位计数器的计数使能(enable),秒钟十位计数器计满标志作为分钟个位计数器的计数使能(enable),分钟个位计数器计满标志作为分钟十位计数器的计数使能,分钟十位计数器计满标志作为时钟个位计数器的计数使能,时钟个位计数器的计满标志作为时钟十位计数器的计数使能。

01libraryieee;02useieee.std_logic_1164.all;--该程序包中定义了转换函数conv_std_loigc_vector(A,位长)03useieee.std_logic_ARITH.all;04entitycounter_TOPis05generic06(MIN_COUNT:natural:=0;MAX_COUNT:natural:=9;07DATAWIDTH:natural:=408);09port10(11clk:instd_logic;12reset:instd_logic;13loadHOUR:instd_logic;第31页共37页

数字规律电路设计试验教案_指导教师赵蕙

14loadMIN:instd_logic;15loadSEC:instd_logic;16enable:instd_logic;17d:inintegerrangeMIN_COUNTtoMAX_COUNT;18ledag:outstd_logic_vector(7downto0);19sel:outstd_logic_vector(2downto0)20);21endentity;22architecturebehaveofcounter_TOPis23componentcounter24generic25(MIN_COUNT:natural:=0;26MAX_COUNT:natural:=927);28port29(clk:instd_logic;30reset:instd_logic;31load:instd_logic;32enable:instd_logic;33carry_out:outstd_logic;34d:inintegerrangeMIN_COUNTtoMAX_COUNT;35q:outintegerrangeMIN_COUNTtoMAX_COUNT36);37endcomponent;38componentdivider39PORT40(41clock:INSTD_LOGIC;42cout:OUTSTD_LOGIC;43q:OUTSTD_LOGIC_VECTOR(9DOWNTO0)44);45endcomponent;46componentDynamic_Scan47port(clk:instd_logic;48HOUR10:instd_logic_vector(3downto0);49HOUR1:instd_logic_vector(3downto0);50MIN10:instd_logic_vector(3downto0);51MIN1:instd_logic_vector(3downto0);52SEC10:instd_logic_vector(3downto0);53SEC1:instd_logic_vector(3downto0);54ledag:outstd_logic_vector(7downto0);55sel:outstd_logic_vector(2downto0)56);57endcomponent;第32页共37页

数字规律电路设计试验教案赵蕙

58signalclk_sig:std_logic;59signalcarry_hour,carry_min,carry_sec:std_logic;60signalHOUR:integerrange0to23;61signalMIN:integerrange0to59;62signalSEC:integerrange0to59;6364signalHOUR10:std_logic_vector(DATAWIDTH-1downto0);65signalHOUR1:std_logic_vector(DATAWIDTH-1downto0);66signalMIN10:std_logic_vector(DATAWIDTH-1downto0);67signalMIN1:std_logic_vector(DATAWIDTH-1downto0);68signalSEC10:std_logic_vector(DATAWIDTH-1downto0);69signalSEC1:std_logic_vector(DATAWIDTH-1downto0);7071begin72divider_inst:dividerPORTMAP(clk,clk_sig);7374counter_HOUR:countergenericmap(0,23)portmap(clk_sig,reset,loadHOUR,carry_min,carry_hour,d,HOUR);75counter_MIN:countergenericmap(0,59)portmap(clk_sig,reset,loadMIN,carry_sec,carry_min,d,MIN);76counter_SEC:countergenericmap(0,59)portmap(clk_sig,reset,loadSEC,enable,carry_sec,d,SEC);7778HOUR10null;60endcase;61endprocess;6263endbehave;3.规律综合4.布局布线

参考附录中FPGA管脚对应关系,根据自己的设计需要,为

温馨提示

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

评论

0/150

提交评论