EDA实验指导书.doc_第1页
EDA实验指导书.doc_第2页
EDA实验指导书.doc_第3页
EDA实验指导书.doc_第4页
EDA实验指导书.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

EDA技术实验指导书陕西理工学院EDA技术实验指导书陕西理工学院电子与信息工程系 二0一四年一月前言EDA(Electronic Design Automation:电子设计自动化)技术是现代电子工程领域的一门新技术.它提供了基于计算机和信息技术的电路系统设计方法.EDA技术的发展和推广应用极大地推动了电子工业的发展.EDA教学和产业界的技术推广是当今世界的一个技术热点,EDA技术是现代电子工业中不可缺少的一项技术.近年来,在高校学生中也经常开展大规模的EDA竞赛,掌握EDA技术是通信电子类高校学生就业的一个基本条件。ALTERA公司是20世纪90年代以后发展很快的最大可编程逻辑器件供应商之一.它开发的MAX+PlusII是业界公认的最优秀的CPLD开发平台之一,在实际中被广泛地使用。 EDA的关键技术之一就是要求用形式化方法来描述数字系统的硬件电路,即要用所谓硬件描述语言来描述硬件电路.所以硬件描述语言以及相关的仿真、综合等技术的研究是当今EDA领域的一个重要课题.而由美国国防部开发的VHDL语言以它面向多层次.多领域的优点,成为业界一致认同的标准硬件电路语言,并在1987年12月由IEEE标准化.它的出现为EDA的普及和推广奠定了坚实的基础.有关统计资料表明,VHDL语言业已被广大设计者所接受,据称已有90的设计者正在使用或即将使用VHDL语言来设计数字系统.另外,众多的CAD厂商纷纷使自己新开发的电子设计软件与VHDL语言兼容.由此可见,使用VHDL语言设计数字系统是电子设计技术的必然趋势。由于硬件电路语言自身的特点,要利用VHDL语言进行设计,不仅需要熟练掌握语言本身,更要有深厚的电子电路基础以及其他的背景知识,只有将VHDL语言结合到实际的领域中进行设计才能发挥它的巨大优势.我们编写此书的目的就是向具有一定电子电路基础以及初步掌握VHDL的设计人员介绍VHDL语言的基本框架和编程技巧,以及如何将VHDL语言结合到相应领域中进行设计,力图使读者摆脱传统的人工设计方法的框框,使学习VHD语言设计的读者能从我们的切身经验中受益,明白如何将VHDL应用于实际中,少走弯路,从而使数字系统设计水平以及设计理念上升到一个新的阶段。由于EDA技术是一门实践性很强的课程,如果说学习、掌握电子设计设计自动化技术有捷径的话,那么应该从仿制、理解、实践、创新开始。学习VHDL应遵循 边学边练的原则,其语法规则只有在实践中才能完全领悟和掌握。本书一步一步的将AHDL、VHDL以及电路图设计方法的使用技巧教授给你们,使你们更好的掌握MAX+Plus II软件的使用。本书的所以实例都是在MAX+Plus II软件平台上进行编译、通过仿真的。本书的编写也是我们从事EDA教学工作的一个阶段总结,真诚的希望广大读者更对书中存在的问题提出宝贵的意见。目录上机注意事项实验一 熟悉MAX+Plus II的使用环境实验二 用图形法设计模为12的同步计数器实验三 用图形法设计逻辑运算单元实验七 用VHDL设计并行奇校验发生器实验八 用VHDL设计3线8线译码器实验九 用VHDL设计4位寄存器型扭环计数器实验十 60进制计数器设计实验十一 移位寄存器的设计实验十二 用VHDL描述74LS169实验十三 序列信号发生器的设计实验十四 图形法设计码长为31的M序列信号发生器实验十五 简单数字秒表的设计实验十六 简单数字频率计设计实验十七 模值可变计数器设计其中前14个实验是必须完成的实验任务,第十五和十六两个实验选择其中一个完成设计的任务。附录:电路图及波形图的打印方法上机前的注意事项:1 实验前应做好的实验准备包括:. 了解实验目的、实验内容和要求. 准备好实验电路和逻辑输入源文件. 认真思考验证设计和进行波形仿真. 思考实验步骤及每步应得到的结果2 实验中细致认真并认真做好实验记录. 试验中要独立思考,有问题可以讨论,但要独立完成实验任务. 记录中间结果、及时做好源文件的拷贝. 实验结果要以仿真结果来说明3. 实验报告要求1 :实验目的2 :实验电路图(或输入源文件)3 :仿真结果 (波形图应体现你的结论或论点)4 :对思考题的理解或验证5 :实验收获和体会(只写体会最深的)6 :实验报告要求打印出来(A4纸字体大小为5号字)注意:除了熟悉MAXPLUS之外,在上机实验时,应做好实验准备(实验内容,电路、源文件,以及实验目的),否则教师有权停止其上机实验。禁止在上机时打游戏、实验报告互相抄袭,由于上机实验有限,请同学利用课余时间主动完成实验内容。有条件的同学可以在自己的计算机上完成所有的实验设计任务MAX+PlusII的安装MAX+PlusII是Multiple Array Matrix and Programmable Logic User System 的缩写1.MAX+PlusII推荐的PC系统配置(1)奔腾500以上或更好PC机.(2)256MB的有效内存,不低于128MB的物理内存.(3)500MB以上的硬盘空间(4)Windows98、Windows2000、Windows XP或者是Windows NT 4.0操作系统2. MAX+PlusII版本MAX+PlusII软件安平台可以分为PC机版和工作站版, 按使用对象可分为商业版、基本版、学生版。商业版:支持全部的输入方式,可以对设计电路进行功能分析、时序分析,并将设计结果下载到Altera 公司的各种芯片中。商业版在运行时需要一个授权码和一个并口硬件狗基本版:免费软件,在商业版的基础上做了一些限制,支持30 000门一下所有的设计,支持原理图、AHDL语言,支持波形仿真、时间分析、编程下载、不完全支持VHDL语言,不支持某些器件,基本版不需要并口硬件狗,只需要向Altera 公司申请一个基本版授权码。学生版:免费软件,功能和BASELINE版一样,但是只支持MAX系列器件。同样需要向Altera 公司申请一个学生版的授权码。3. MAX+PlusII的安装MAX+PlusII几个版本的安装方法基本是一样的,我们在这里仅介绍在Windows2000下MAX+PlusII基本版的安装过程。(1)插入MAX+PlusII的安装光盘,出现图1.1的界面。或在资源管理器里面双击Setup.exe。(2)选择BASELINE/E+MAX项安装基本版和或学生版,如果选择Full/Custom/FLEXlm项安装商业版。(3) 安装向导完成后选择Next,按屏幕的提示操作即可。1.14. MAX+PlusII的使用:安装好后,第一次运行MAX+PlusII时还需要多许多的工作才能保证软件的正常运行。(1)在MAX+PlusII的软件目录下,双击MAX+PlusII 10.2 BASELINE的图标。第一次运行时屏幕上会出现关于授权协议的提示窗口,如图1.2所示。(2)阅读完授权协议信息以后,选择Yes,出现防止复制的警告信息。选择No,则退出MAX+PlusII。(3)将你所申请的授权码文件License.dat 文件拷贝到 maxplus2的文件夹下面。(4)设置授权码的过程是:在MAX+PlusII界面中,选择菜单命令Options/License Setup,出现1.3的所示的对话框,通过Browse按钮选择License .dat 文件。(5)是设置好授权文件后,选择OK按钮,就会回到MAX+PlusII管理器界面中进行设计了。1.21.3MAX+PlusII图形设计输入方法1. 指定设计项目名称MAX+PlusII编译的工作对象是项目,所有在进行一个逻辑设计的时候,要指定设计的项目名称,每个项目都应该建立一个单独的子目录(只能是数字或者是英文字符不能是中文),对于初学者而言,每个设计必须要有一个项目名,并且保证项目名和设计文件名一致。2. 建立新文件(1) 在File菜单中选择New,如图2.1所示,将出现New的对话框,如图2.2所示 2.1 2.2(2) 在New 对话框选择 Graphic Editor File 项,然后按下OK按钮,将会出现一个无标题的图形编辑窗口。3. 输入图形元件和宏功能符号MAX+PlusII 为实现不同的逻辑功能提供了大量的图形元件和宏功能符号(Primitive&Macrofunction)库供设计人员在图形编辑器文件中直接使用。它的分类信息在Max2workmaxlib子目录下。各个子目录存放的符号说明如下:Prim : Altera的图形元件(基本逻辑块)Mf : 74系列逻辑等效宏库Mega_lpm:参数化模块库、宏功能高级模块和IP功能模块。Edif : edif接口库4. 在图形设计文件中输入图形元件和宏功能符号的步骤:(1)在选择工具按钮有效时,在图形编辑窗口的空白处单击鼠标左键以确定输入位置(2)在Symbol菜单里面选择Enter Symbol或单击鼠标右键并选择Enter Symbol,或双击鼠标左键,将出现一个Enter Symbol对话框,在Symbol Libraries框中双击选择 “.maxplus2max2libprim”。所有的Altera 图形元件以列表的方式显示出来,选择你想输入的图形元件,然后双击OK按钮。此时所选中的图形元件就在图形编辑窗口中。(3) 74系列的符号输入和图形元件方法相似,只是路径是“.maxplus2max2libmf”。重复以上几步就可以连续选取图形元件和宏功能符号了。5. 连线如果需要连接两个端口,可以将鼠标移到其中的一个端口,这是鼠标自动变成“+”形状,然后可按以下步骤重复:(1).一直按着鼠标的左键并将鼠标拖到第二个端口。(2).放开左键,则一条连线就被画好了。(3).如果需要删除一条连线,单击这根连线并按住Del键即可6.为引脚和节点命名(1)放置输入输出的引脚和输入图形元件相似,只要在Enter Symbol对话框中键入Input(Output)单击OK即可。(2)在引脚的PIN_NAME处双击鼠标左键,输入指定的名字,既可以为引脚命名(3)点击鼠标左键选中的需要命名的线,输入名字就可以为连线命名了。实验一 熟悉EDA工具MAXPLUS1实验目的:掌握MAXPLUS的使用方法(1) 熟悉图形输入法(2) 理解编译方法(3) 了解定时仿真2 实验内容:设计一个二选一数据选择器、格雷码编码器、全加法器。任选一个,做的越多越好。3 实验要求熟悉图形逻辑输入法;理解编译方法;了解功能仿真的方法和定时仿真的方法。了解把逻辑变成一个逻辑符号(Symbol)的方法。把自己认为好的实验结果写成实验报告。(要计成绩)下面将以格雷码编码器的编译和仿真过程作为编译和仿真的说明:编译过程:在完成了设计文件的输入之后,就可以对其进行编译。在MAX+PlusII的File菜单的Project里面选择Set Project to Current File 将设计的文件设为当前的项目,在MAX+PlusII的开始菜单里面选择Complier 打开编译器,选择Star 就开始编译了。编译成功后将生成时序模拟文件和器件编程文件。编译器由多个部分组成,各个部分的名称与功能如下:Compiler Netlist Extractor :编译器网表提取器,该过程完成后生产设计的网表文件,如果图形连接中由错误的话,该过程将指出此类错误。Database Builder :数据库建库器。Logic Synthesizer :逻辑综合器,对设计进行逻辑综合,即选择合适的逻辑化简算法,去除冗余逻辑。Fitter:适配器,它通过一定的算法进行局部布线,将通过逻辑综合的设计最恰当的用一个或多个器件来实现。Timing SNF Extractor :时序仿真的模拟器网表文件生成器,它可生成用于时序模拟的标准时延文件。Assembler:装配器,生成用于器件下载/配置的文件时序仿真:编译器通过了Timing SNF Extractor之后就可以进行时序仿真了。步骤如下:建立波形输入文件(也称仿真器通道文件SCF)(1)在File 菜单里面选择 New 打开新建文件类型对话框。选择 Waveform Editor File 项单击OK。(2)在波形编辑器窗口的Name下单击鼠标右键,出现浮动的菜单,选择Enter Nodes from SNF.可以打开“从SNF文件输入观测点”的对话框。(3)在Type区选择Input和Output,在默认的情况下是打开的,单击List按钮,可在Available Nodes & Groups区看到设计文件中使用的输入/输出信号,单击=按钮可以将这些信号选择到 Selected Nodes & Groups区。单击OK按钮,关闭对话框即可看到波形编辑窗口,将此波形文件保存为默认名。在波形文件中添加输入/输出信号名后,就可以开始对输入信号建立波形了。 绘图工具条说明将B0的Multiplied By设为1将B0的Multiplied By设为2将B0的Multiplied By设为3将B0的Multiplied By设为4 这是仿真的界面,单击Start就可以进行时序仿真了这是仿真的结果二进制码和格雷码之间的关系:真值表:B0 B1 B2 B3G0 G1 G2 G3B0 B1 B2 B3G0 G1 G2 G30 0 0 00 0 0 01 0 0 01 1 0 00 0 0 10 0 0 11 0 0 11 1 0 10 0 1 00 0 1 11 0 1 01 1 1 10 0 1 10 0 1 01 0 1 11 1 1 00 1 0 00 1 1 01 1 0 01 0 1 00 1 0 10 1 1 11 1 0 11 0 1 10 1 1 00 1 0 11 1 1 01 0 0 10 1 1 10 1 0 01 1 1 11 0 0 0逻辑关系式:、 、注:为异或(xor)运算符号 请同学们自行验证仿真结果。仿真完毕以后,在在MAX+PlusII的File菜单Create Default Symbol 就可以创建一个逻辑符号了 实验二 用图形法设计模为12的同步计数器1实验目的:掌握MAXPLUS的图形输入法和仿真过程(1) 掌握图形输入法(2) 熟悉仿真方法(3) 理解定时仿真2 实验内容:用图形法设计模为12的同步计数器3 实验要求掌握图形逻辑输入法;熟悉仿真方法;理解功能仿真的方法和定时仿真的方法。通过编译之后进行项目检验:建立波形输入文件(也称仿真器通道文件SCF)(1)在File 菜单里面选择 New 打开新建文件类型对话框。选择 Waveform Editor File 项单击OK。(2)在波形编辑器窗口的Name下单击鼠标右键,出现浮动的菜单,选择Enter Nodes from SNF.可以打开“从SNF文件输入观测点”的对话框。(3)在Type区选择Input和Output,在默认的情况下是打开的,单击List按钮,可在Available Nodes & Groups区看到设计文件中使用的输入/输出信号,单击=按钮可以将这些信号选择到 Selected Nodes & Groups区。单击OK按钮,关闭对话框即可看到波形编辑窗口,将此波形文件保存为默认名。波形编辑器窗口Name的浮动菜单列出输入/输出信号波形文件中的输入输出信号网格大小设置对话框绘图网格设置菜单条在此,默认的情况下,模拟的时间长短为1us。此时再“File”菜单中选择“End Time”来设置结束时间。(1) 在模为12的计数器中,我们将信号“en”从头到尾,即从0ns到1000ns赋值为1。选中信号“en”,单击“Name”区中的“en”信号,可看见“en”信号变为黑色,表示被选中;单击即可将“en”信号赋为1(2) 采用同样的方式可将信号“clear”从0ns到1000ns赋值为“1”,为观察其清零的作用,将在240ns到300ns之间将其赋值为“0”(因为该信号低电平有效将鼠标移到“clear”信号的240ns处按住鼠标左键并向右拖动鼠标300ns处,松开鼠标左键可以看到这段区域为黑色,被选中,单击工具条中的即可。(3) 为了将时钟信号“clk”赋周期为40ns的时钟信号。选中信号“clk”;设置信号周期。单击工具条中的就可以打开下面的对话框,单击“OK”关闭就对话框即可生成所需的时钟。时钟周期设置对话框选择“File”中的“Save”存盘。将此已完成波形输入:建立好的输入波形图运行仿真器,进行时序仿真(1) 从“MAX+PlusII”菜单中选择“Simulator”,打开仿真器,单击按钮“Start”开始仿真。仿真完毕之后,单击“Open SCF”按钮打开刚才编辑的波形文件,就可以对仿真结果进行检查。仿真器为了观测方便,可将计数器输出Q3、Q2、Q1、Q0作为一个组来观测:(1) 将鼠标移到“Name”区的Q3上,按住鼠标的左键并按住向下拖动鼠标之Q0处,松开左键,可选中信号Q3、Q2、Q1、Q0。(2) 在选中区(黑色)上单击鼠标右键,打开一个浮动菜单,选择“Enter Group”。(3) 单击“Ok”关闭此对话框,可以得到下面的波形图文件。现在观测就容易了。随堂练习:完成24进制计数器的设计实验三 用图形法设计逻辑运算单元1实验目的:掌握MAXPLUS仿真的过程和仿真的结果的验证(1) 掌握图形输入法(2) 掌握编译方法(3) 掌握仿真的过程和仿真的结果的验证2 实验内容:用图形法设计逻辑运算器3 实验要求掌握图形逻辑输入法;掌握编译方法;理解仿真的过程和仿真的结果。 仿真结果仿真结果验证:第一区:S0时,此时进行OR逻辑运算,即YA OR B1 OR 1=1,故第一区仿真结果正确。第二区:S1时,此时进行XOR逻辑运算,即YA XOR B1 XOR 1=0,故第二区仿真结果正确。MAX+PlusII的VHDL语言描述输入法1、指定设计项目名称MAX+PlusII编译的工作对象是项目,所有在进行一个逻辑设计的时候,要指定设计的项目名称,每个项目都应该建立一个单独的子目录(只能是数字或者是英文字符不能是中文),对于初学者而言,每个设计必须要有一个项目名,并且保证项目名和设计文件名一致。建立新文件在File菜单中选择New,将出现New的对话框,在New 对话框选择 Text Editor File 项,然后按下OK按钮,将会出现一个无标题的语言描述输入法编辑窗口。2、VHDL是非常高速的硬件描述语言,以VHDL编辑数字电路的主要方式在于函数库引入声明、管脚声明、逻辑描述,在安装MAX+PLUS软件时已有数种逻辑函数与VHDL范例安装在目录内。(1)基本逻辑函数(Primitives)VHDL信号输入输出端的基本函数有IN、OUT、INOUT, 相当于图形编辑的基本逻辑函数input、output、bidir,但在VHDL语法中有AND、OR、NOT等基本逻辑函数则变成逻辑操作数,VHDL引用Altera链接库的基本逻辑函数如DFF、TFF等,基本逻辑函数类型在Maxplus2vhdl87alteramaxplus2.vhd与Maxplus2vhdl93alteramaxplus2.vhd的文件的maxplus2套件中定义。(2)旧式函数(Old-style Macrofunctions)VHDL可引用Altera链接库的旧式函数所收集的常用逻辑电路,如a_7400、a_74161等。旧式函数类型在Maxplus2vhdl87alteramaxplus2.vhd与Maxplus2vhdl93alteramaxplus2.vhd的文件的maxplus2套件中定义。 (3) 参数化函数( Macrofunctions)VHDL可引用Altera链接库的参数化函数,例如:lpm_or 、lpm_ram_io等,这些函数都放在Maxplus2vhdl87lpmlpm_pack.vhd与Maxplus2vhdl93lpmlpm_pack.vhd文件的LPM_COMPONENTS套件中定义。3、VHDL编辑的规则 1.脚位名:输入/ 输出脚位的声明,可以采用英文字母的大写“A”到“Z”,或是小写“a”到“z”数字“0”到“9”或是 底线符号“_”,不可超过32个字母,不能以数字开头或底线符号“_”开头,也不能连续使用底线符号“_ _”,也不能以符号“_”结束,更不能与关键字相同。3.文件名与电路名称(Entity name):电路名称必须与文件名相同,而扩展名为“.vhd”,命名规则为不可超过32个字母,不能以数字开头或底线符号“_”开头,也不能连续使用底线符号“_ _”,也不能以符号“_”结束,更不能与关键字相同。4.项目名:一个项目(project)包含所有从电路设计文件产生的文件,这些文件是由MAX+PLUS程序编译之后产生的,有共同的文件名称但是扩展名则不相同。而项目名称必须与最高层的电路设计文件名相同。5.批注符号:VHDL的批注符号是 “-” , 在“-” 后面的那一行文字全被视为批注文字。6.VHDL的数据类型:VHDL常用的数据类型有STD_LOGIC和STD_LOGIC_VECTOR形态,BIT和BIT_VECTOR形态,SIGNED和UNSIGEND形态。4、VHDL编辑流程1.打开新文件 2.保存文件 3.指定项目名和文件名相同 4.插入链接库声明样本 5.更改链接库名称6.插入样本 7.更改电路名和文件名相同 8.更改信号输入端和输出端的管脚名称 9.逻辑描述 10.指定设计器件 11保存并检查 12纠错 13保存并编译 14创建电路符号 15创建电路包含文件实验七 用VHDL设计并行奇校验发生器1实验目的:了解MAXPLUS的VHDL语言描述输入法(1) 了解VHDL语言描述输入法(2) 了解VHDL语言(3) 理解用循环语句进行描述4位并行奇校验发生器源程序:library ieee;use ieee.std_logic_1164.all;entity parity_loop isport (a : in std_logic_vector(0 to 2); b : in std_logic; y : out std_logic);end;architecture a of parity_loop issignal s : std_logic_vector(0 to 3);beginprocess(a)begins(0)=b;for i in 0 to 2 loops(i+1)=s(i)xor a(i);end loop;y=s(3);end process;end a;4位并行奇校验发生器逻辑电路图:通过设计我们知道,一些数字电路的结构具有重复性,且重复部件较多,如果每一部分都要描述,工作量太大,利用VHDL语言的“复制功能”将设计中的重复劳动得以简化,可以提高工作效率。在源程序中使用forloop对电路进行描述,数据对象使用信号类型。如果需要设计10位并行奇校验发生器,我们只需要修改forloop就可以了随堂联系:用图形法设计的方法和VHDL语言描述的方法设计10位并行奇校验发生器。实验八 用VHDL设计3线8线译码器1实验目的:了解MAXPLUS的VHDL语言描述输入法(1) 掌握VHDL语言描述输入法(2) 熟悉VHDL语言(3) 理解用case语句进行描述电路、利用真值表辅助,编写程序3线8线译码器的源程序library ieee;use ieee.std_logic_1164.all;entity decoder3_8 isport (a,b,c,g1,g2a,g2b :in std_logic; y :out std_logic_vector(7 downto 0) );end ;architecture rtl of decoder3_8 issignal dz:std_logic_vector(2 downto 0);begindzyyyyyyyyy=XXXXXXXX;end case;elsey=11111111;end if;end process;end ;本程序描述的3线8线译码器与中小规模集成电路74LS138相同随堂联系:用图形法设计的方法和AHDL语言描述的方法设计3线8线译码器。实验九 用VHDL设计4位寄存器型扭环计数器1实验目的:掌握MAXPLUS的VHDL语言描述输入法(1) 掌握VHDL语言描述输入法(2) 理解VHDL语言(3) 理解if语句进行描述4位寄存器型扭环计数器4位寄存器型扭环计数器源程序Library ieee;use ieee.std_logic_1164.all;entity shift_count isport (clr ,clk :in std_logic; y :out std_logic_vector(3 downto 0);end;architecture shift_1 of shift_count issignal q :std_logic_vector(3 downto 0);signal d0:std_logic;beginp1:process(clk,clr)beginif (clr=0) thenq=1111;elsif (clkevent and clk=1)thenq(0)=d0;q(3 downto 1)=q(2 downto 0);end if;if (q=1111 or q=1110 or q=1000 or q=0000 or q=0001 or q=0011 or q=0111)thend0=not (q(3);elseif q=1010 or q=0101 thend0=not q(3);elsed0=q(3);end if;end if; end process;y=q;end ;设计移位寄存器扭环型计数器的关键在于描述q(0)级的输入信号d0;根据扭环定义,d0来自最后一级的反相端,但是应当考虑自启动问题,本程序设计了电路的自启动功能 思考:通过仿真图形可以看到,一开机计数器进入非法状态“0101”、“1011”,之后立即进入合法状态“0111” 这是为什么,验证了什么?实验十 60进制计数器设计1实验目的:掌握MAXPLUS的VHDL语言描述输入法(1) 掌握VHDL语言描述输入法(2) 掌握VHDL语言(3) 理解if语句进行描述计数器60进制计数器源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count60 isport (clk :in bit; oc :out bit; y :out integer range 0 to 59 );end ;architecture a of count60 issignal q :integer range 0 to 59;beginp1:process(clk)beginif (clkevent and clk=1)thenif q=59 thenq=0;elseq=q+1;end if;end if;if q30 thenoc=0;elseoc=1;end if;y=q;end process;end;随堂联系:设计一个模为60和100进制的同步十进制加法器可以采用图形法和语言描述(不限语言)必须完成!实验十一 移位寄存器的设计1、 实验任务:设计一个移位寄存器2、 可以左、右移位,同步置数、同步清零3、 使用If语句来完成设计 移位寄存器的参考设计程序library ieee;use ieee.std_logic_1164.all;entity shifter isport (data :in std_logic_vector(7 downto 0); sl_in ,sr_in, reset, clk :in std_logic; mode : in std_logic_vector(1 downto 0) ;Qout :buffer std_logic_vector(7 downto 0);end shifter;architecture behave of shifter issignal q1,q0 :std_logic;beginprocess(clk)beginif (clkevent and clk=1) thenif (reset=1) thenQout0); -同步清零elsecase mode iswhen 01=QoutQoutQoutnull; - -null表示无操作end case;end if;end if;end process;end behave;随堂练习:用图形法完成8位的移位寄存器的设计实验十二 用VHDL描述74LS1691、 设计任务:用VHDL语言描述中小规模集成电路2、 掌握用语言描述电路的方法 设计的参考程序library ieee;use ieee.std_logic_1164.all;entity altera169 isport(d: in integer range 0 to 15;clk : in std_logic;entn: in std_logic;enpn: in std_logic;u_dn: in std_logic;ldn : in std_logic;tcn : out std_logic;q :out integer range 0 to 15 );end ;architecture a of altera169 issignal qi:integer range 0 to 15;signal ocin:std_logic;beginprocess (clk,enpn,entn)beginif (clkevent and clk=1)thenif ldn=0 thenqi=d;elseif (enpn=0 and entn=0)thenif (u_dn=1) thenqi=qi+1;elseqi=qi-1;end if;elseqi=qi;end if;end if;end if;if entn=0 thenif (u_dn=0and qi=0) or (u_dn=1and qi=15) thenocin=0;elseocin=1;end if;elseocin=1;end if;q=qi;tcn= ocin;end process;end;74ls169的电路原理图随堂练习:完成74ls169的电路原理图的设计通过设计我们知道,一些数字电路的结构具有重复性,且重复部件较多,如果每一部分都要描述,工作量太大,利用VHDL语言的“复制功能”将设计中的重复劳动得以简化,可以提高工作效率。实验十三 序列信号发生器的设计实验目的:了解信号发生器、掌握原理图和语言描述的层次设计方法。序列信号发生器的逻辑电路图Control电路源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity control isport (clk : in bit;y :out integer range 0 to 7);end;architecture a of control issignal q: integer range 0 to 99;signal j: integer range 0 to 15;signal clk1: bit;beginp1:process(clk)beginif (clkevent and clk=1) thenif q=99 thenq=0;elseq=q+1;end if;if q50 thenclk1=0;elseclk1=1;end if;end if;end process;p2:process(clk1 )beginif (clk1event and clk1=1) thenif j=7 thenj=0;elsej=j+1;end if;end if;y=j;end process;end;波形仿真图:图中由于clk信号的频率信号比序列信号的频率高几百倍,所以clk信号被压缩为辨不清的波形节点的黑带。实验十四 图形法设计码长为31的M序列信号发生器实验目的:了解什么是M序列,M序列的用途。实验原理:扩展频谱通信系统中,伪随机码序列起着非常重要的作用,在直接序列扩频(DSSS)、(Direct Sequence Spread Spectrum)通信中:是直接利用具有高码率的扩频码序列采用各种调制方式在发端与扩展信号的频谱,而在收端,用相同的扩频码序列去进行解码,把扩展宽的扩频信号还原成原始的信息。因此伪随机码序列发生器是扩展频谱通信系统中的核心单元。M序列有叫最长线性反馈移位寄存器序列,由于它的自相关性好,所以在直接序列扩频通信中应用的十分广泛。M序列的产生方法比较简单有两种方法,一种是简单型码序列发生器(SSRG Simple Shift Register Generator)另一类是模块型码序列发生器(MSRG Modular Shift Register Generator)。R级的移位寄存器的反馈系数由M序列的特征多项式决定,要产生一个码长为31的M序列,码序列产生的移位寄存器数为5。M序列的性质(1) n级m序列的长度为,m序列的穷尽。(2) 在m序列中,“1”的个数比“0”的个数多1,即为,“0”的个数为。如例2中有8个“1”,7个“0”。(3) 用宽度为n的窗口沿m序列滑动N次,每次移1位,除全“0”外,其它每种n位状态刚好出现一次。如例2。(4) 在m序列中定义连续相同的一组符号为一个游程,把该相同符号的个数称为游程长度,则对任一m序列有:a) “1”的长度为n的游程只有1个,“0”的长度为n的游程为0个。如例2中有一个“1111”,无“0000”。b) “1”的长度为(n-1)的游程为0个,“0”的长度为(n-1)的游程为1个。如例2中有一个“000”,无“111”。c) “1”的长度为(n-2),“0”的长度为(n-2)的游程各为1个。如例2中有一个“11”,一个“00”。d) “1”的长度为(n-3),“0”的长度为(n-3)的游程各为2个。如例2中有二个“1”,“1”,二个“0”,“0”。e) “1”的长度为(n-4),“0”的长度为(n-4)的游程各为4个。例2中无法验证。f) “1”的长度为k,“0”的长度为k的游程各为个,其中1kn-1, (5) 一个m序列与该序列的任意位相移后的序列模2加后仍为具有某种相移的该m序列。此性质为线形叠加性。简单型码序列发生器SSRG的M序列发生器 模块型码序列发生器MSRG的M序列发生器m序列发生器 n级m序列发生器 n级 初态设置时钟Gold码M1+M2M1M222Gold码构成原理如图随堂练习:根据M序列的性质结合M序列的波形仿真图写出31位码长的M序列的31个码元,结合Gold码构成原理如图设计一个Gold码序列信号发生器实验十五 简单数字秒表的设计设计任务:采用顶层设计的方法设计一个秒表设计目的 :掌握数字系统的设计方法,完成一个数字系统的设计。设计要求 :设计可以显示毫秒、秒、分的秒表,显示精度为10ms。设计原理:将一个周期为10ms的时钟信号送入3个计数器中,由两个十进制计数器构成的一百进制计数器中,将其的个位和十位数输出分别接到七段译码器中可以显示毫秒;在将一百进制计数器的进位端送到六十进制的计数器中,将其个位和十位数输出分别接到七段译码器中可以显示秒;在将六十进制计数器的进位端送到六十进制的计数器中,将其个位和十位数输出分别接到七段译码器中可以显示分;其中的一百进制计数器和六十进制的计数器均可以同步预置数的计数器。计数器计数到59:59:99”的时候回到00:00:00”.这样就可以构成一个秒表了。其中100进制计数器由两片74162十进制计数器构成了一个同步预置数百进的计数器具有一个进位输出端,60进制计数器是一个由74160的十进制计数器和一个预置数的六进制计数器成了一个同步预置数六十进的计数器有一个进位输出端,另外一个60进制

温馨提示

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

评论

0/150

提交评论