EDA实验指导书2013(学生)_第1页
EDA实验指导书2013(学生)_第2页
EDA实验指导书2013(学生)_第3页
EDA实验指导书2013(学生)_第4页
EDA实验指导书2013(学生)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

五、KHF-5型CPLD/FPGA实验开发系统(一)、系统概述实验箱由主板和下载板组成,能够满足工科院校开设CPLD/FPGA课程的实验需要,同时也可用作CPLD/FPGA应用系统。编辑方式有图形编辑,文本编辑,波形编辑,混合编辑等方式,硬件描述语言有AHDL,VHDL,Verilog-HDL等语言。配有模拟可编程器件ispPAC器件系列,突破传统的EDA实验箱一般只做数字电路实验的模式,用户可以在实验箱上通过模拟可编程器件进行模拟电子的开发训练。实验箱配有10个数码管,(包括6个并行扫描数码管和4个串行扫描数码管)。16个数据开关,4个脉冲开关,数据开关和脉冲开关可配合使用,也可单独使用。A/D转换,采用双A/D转换,有常规的8位A/D转换器ADC0809,还可以配置位数较高,速度较快的12位A/D转换器MAX196。D/A转换器,采用高速DA芯片0800。通用小键盘,本实验箱提供16个微动开关(4X4),可方便的进行人机交互。具有单片机扩展槽,由于实验箱上的所有资源(如数码管、数据开关、小键盘等)都可以借用,因此通过此扩展槽可以开发单片机及单片机接口实验。外围扩展口,为了便于开发,本实验箱还预留一个40PIN的扩展槽,用以与外围电路的联接。下载板采用CPLD/FPGA芯片,具有芯片集成度高、内部资源丰富、用户可用引脚多等显著优点,不易出现芯片内部资源尚有空余而芯片引脚已用完的情况。CPLD/FPGA下载板上包含断电芯片功能保持功能,并带有COM1、COM2、COM3、COM4四个50脚的插针,使下载板易于与主板连接起来。下载板上也可作为应用板使用。本实验装置在PC机上还配有一个专用下载程序(CPLDDN4),供用户下载程序。当串行通信电缆分别与下载板和PC机相连后,通过此界面可以实现在MAX+PLUS下编写的电路(如图形、波形、AHDL语言、VHDL语言编写的电路)进行下载、写EEPROM和读EEPROM。具有VGA接口、USB接口、PS/2接口、语音接口。实验箱配有128×64字符型液晶屏一块。(二)、硬件结构及原理图本实验箱由实验板和下载板两部分组成。下载板可以和主板配合完成数字电路及CPLD/FPGA的各种开发和实验,也可以单独做实际应用的应用板。且具有模拟可编程下载板、VGA/PS2接口板、USB接口板、点阵显示板。1.时钟源 图1-2050MHz信号源本实验箱CPLD/FPGA芯片由50MHz晶振提供振荡频率,接至P183管脚。为了方便操作,还为系统提供了约1Hz—1MHz连续可调的时钟信号,接至CPLD/FPGA的P78脚,通过调节短路夹J1和J2来改变其输出频率值。22.1184MHz的时钟信号接于CPLD/FPGA的80脚(P80)。

图1-21可调信号源2.输入开关本实验箱中有16个数据开关(SW1——SW16),4个脉冲开关(KP1——KP4)。在通常状态下数据开关和脉冲开关为低电平。数据开关和脉冲开关可配合使用,也可单独使用。若二者配合使用,在数据开关为低电平时,按下脉冲开关则产生一个高电平脉冲;在数据开关为高电平时,按下脉冲开关则产生一个低电平脉冲。其中16个数据开关与CPLD/FPGA的管脚的连接情况依次为:SW1-P103,SW2-P104,SW3-P111,SW4-P112,SW5-P113,SW6-P1114,SW7-P115,SW8-P116,SW9-P119,SW10-P120,SW11-P121,SW12-P122,SW13-P125,SW14-P126,SW15-P127,SW16-P128。同时与数据开关和CPLD/FPGA相应引脚相连的还有16个LED发光二极管,可以作为输出使用。在作为输出时,不论数据开关和脉冲开关为高电平还是低电平,均不影响其状态。 图1-22脉冲开关脉冲开关(KP1——KP4)与CPLD/FPGA的管脚的连接情况依次为P103,P104,P111,P112与数据开关SW1—SW4复用CPLD/FPGA管脚。脉冲开关经RS触发器去抖动之后,便可实现在数据开关为高电平时产生一个负脉冲,在数据开关为低电平时产生一个正脉冲。此电路适合作计数器,暂存器的脉冲输入。3.数码管显示本实验箱有10个数码管(SEG1——SEG10),采用共阴极8段LED显示。其中SEG1——SEG2采用静态显示方式,SEG3——SEG10采用动态扫描显示方式。数码管SEG1——SEG10与CPLD/FPGA的对应管脚接法为: 图1-24数码管显示原理图SEG1(a,b,c,d,e,f,g,p)——P161(D4),P162(D5),P163,P164(D6),P166(D7),P167,P168,P169。SEG2(a,b,c,d,e,f,g,p)——P170,P172,P173,P174,P175,P176,P177,P179。其中P169、P179分别接到两个数码管的小数点上。其中SEG1、SEG2的8段输入端分别与8个LED发光二极管相连且同时显示。LED发光二极管在实验箱上的标志为D17—D32分别对应P161(D4),P162(D5),P163,P164(D6),P166(D7),P167,P168,P169,P170,P172,P173,P174,P175,P176,P177,P179。图1-25串行扫描数码管原理图 图1-26串行扫描数码管74138片选原理图SEG3——SEG10的共阴公共端G经74138译码并反相后分别与CPLD/FPGA的对应管脚相连,74138的A、B、C三个输入端分别接到CPLD/FPGA的P180、P186、P187管脚,由其控制各位分时选通,动态扫描。SEG3——SEG10(a,b,c,d,e,f,g,p)的各段与CPLD/FPGA引脚的对应关系为:P189、P190、P191、P192、P193、P195、P196、P197。如图1-26所示。4.A/D转换本实验箱A/D转换采用双A/D转换,有8位A/D转换器ADC0809与12位A/D转换器MAX196。对于ADC0809只使用了一路模拟量输入IN-1,其余7个模拟量输入端均接到扩展槽COM5。用户可最多实现7路模拟量分时输入。ADD-A,ADD-B,ADD-C为可选择地址,分别接到CPLD/FPGA的对应管脚P36,P37,P38START(启动信号)与ALE(地址锁存信号)均接到CPLD/FPGA的对应管脚P19。时钟CLOCK端接到CPLD/FPGA的对应管脚P40。EOC(转换结束信号)接到CPLD/FPGA的对应管脚P39,Enable接对应的管脚P17。8位数字量输出端由低(lsb2-8)到高(msb2-1)分别接到CPLD/FPGA的对应管脚P24,P25,P26,P27P28,P29,P30,P31。对于MAX196,其VDD接外电源VCC(+5V),WR写端接P25,RD读端接P24,INT端接P19,6路输入与ADC0809复用,12位输出(D0—D12)分别接P26,P27,P28,P29,P30,P31,P36,P37,P38,P39,P40,P41。用户可以随意的使用任意一种。 图1-27A/D转换器图1-28A/D转换器5.D/A转换实验箱D/A转换器DAC0800,参考电压为VCC(+5V),数字量由CPLD/FPGA输入到DAC0800的DI0-DI7,与CPLD/FPGA管脚的对应关系为:P132-DI0,P133-DI1,P134-DI2,P135-DI3,P136-DI4,P139-DI5,P140-DI6,P141-PDI7,P16—CS。模拟量输出经J3(COM2)输出。 图1-29D/A1转换器DAC0800图1-30D/A2转换器DAC08006.单片机扩展槽及外扩槽在主板上留有一个模拟单片机扩展槽,用于CPLD/FPGA模拟单片机之用,其与CPLD/FPGA的接口分别为,P0.0—P0.7(39—32),对应于P44,P45,P46,P47,P53,P54,P55,P56;P1.0—P1.7(1—8),对应于P57,P58,P60,P61,P62,P63,P64,P65;P2.0—P2.7(21—28),对应于P75,P74,P73,P71,P70,P69,P68,P67;P3.0—P3.7(10—17),对应于P83,P85,P86,P87,P88,P89,P90,P92;PSEN脚对应于P194,ALE脚对应于P79;RST脚对应于P18。7.RS232接口 TXD(PC)接到RXD(CPLD/FPGA)的P182; RXD(PC)接到TXD(CPLD/FPGA)的P93。8.RS485接口 RS485的DI、RD分别接CPLD/FPGA的P167、P169管脚,DE、RE并联后与CPLD/FPGA的P168相连。 图1-31MAX487原理图9.键盘 4X4键盘的接口电路如图1-32所示:CPLD/FPGA的P141、P142、P143、P144管脚作为扫描码输出,分别接到键盘的输入端,键盘的查询输出接到CPLD/FPGA的P147、P148、P149、P150四个管脚上。 图1-32键盘接口示意图10.扩展接口 图1-33单片机接口图(一)40PIN的扩展槽COM6:为了外扩使用,在主板上设置有一个40PIN的扩展槽COM6,该扩展槽与标准的51单片机仿真机接口兼容,其接口定义如下:1-PO57、2-VCC、3-PO58、4-PO44、5-PO60、6-PO45、7-PO61、8-PO46、9-PO62、10-PO47、11-PO63、12-PO53、13-PO64、14-PO54、15-PO65、16-PO55、17-P18、18-PO56、19-PO83、20-VCC、21-PO85、22-P79、23-PO86、24-PO93、25-PO87、26-PO67、27-PO88、28-PO68、29-PO89、30-PO69、31-PO90、32-PO70、33-PO92、34-PO71、35-XTAL2、36-PO73、37-XTAL1、38-PO74、39-GND、40-PO75。其中POXX表示CPLD/FPGA的管脚经过电阻后与扩展口相连。 图1-34单片机接口图(二)PS2接口:图1-35PS2接口图26PIN的扩展槽COM5:其与CPLD/FPGA对应的管脚在主板上已标明,此扩展槽可供用户根据自己的需要使用,。图1-3626PIN_COM5接口图

图1-3726PIN_COM5接口匹配电阻功放部分电路: 图1-38功放电路示意图音频前项通道部分电路: 图1-39电压处理

图1-40双声道及话筒前置处理电路实验一:QuartusII软件的基本操作与应用一、实验目的:1、通过一个简单的3-8译码器的设计,掌握组合逻辑电路的设计方法。2、掌握组QuartusII软件的基本操作。3、初步了解可编程器件设计的全过程。二、实验步骤:一)、新建项目首先新建一个项目来管理所要新建的各种文件,方法是:在QuartusⅡ环境下,打开菜单File,选择子菜单NewProjectWizard后,打开如下图1所示窗口,按照向导窗口的提示,创建新项目。图1新建项目窗口1点击图3-3中的“Next”按钮,在下图2所示窗口中输入有关的路径名和项目名称后,按下“Finish”按钮,即可完成新建项目的工作。新项目的保存路径新项目的名称新项目的保存路径新项目的名称新项目中顶层模块的名称注意:该名称应与新项目的名称一致图2新建项目窗口2二)、原理图设计与编译原理图的设计与编译在CompileMode(编译模式)下进行。1新建原理图文件打开File菜单,选择New,出现如下图3所示“新建”窗口。图3新建窗口在图3-5所示的“DeviceDesignFiles”标签中,选择“BlockDiagram/SchematicFile”项,按下“OK”按钮即可打开原理图编辑器(如图4所示),进行原理图的设计与编辑。Block&SymbolEditorsBlock&SymbolEditors图4原理图编辑器选择“Block&SymbolEditors”中的不同器件(如图5所示),在编辑区中就可完成原理图的设计编辑。元器件翻转工具元器件翻转工具元器件单线连接线总线连接线文本工具图5Block&SymbolEditors添加元器件可点击“Block&SymbolEditors”中元器件符号,或在编辑区的空白处双击鼠标左键,出现“Symbol”对话框,在“Libraries”中选择所需元器件,或直接在“Name”文本框中输入元器件名称,如74138(3-8译码器),点击“OK”按钮,将元器件拖放到编辑区中。图6Symbol对话框按照设计需要,使用“单线连接线”或“总线连接线”将各器件的引脚连接起来。总线的命名采用数组形式,如out[7..0],与总线相连的引脚也采用相同的数组形式命名;若需从总线中引出单线时,须指出各单线对应的总线位号(双击线条即可命名)。(如图7所示)两根连接线,若名称相同,亦表示两线为连通状态。(如图8所示)图7连线示意图1图8连线示意图2选择某一元器件,点击“元器件翻转工具”按钮,即可改变元器件引脚顺序及摆放方向(如图9所示)。图9元器件翻转工具使用效果2编译原理图原理图设计完成后,在编译模式下,点击“►”按钮进行编译,编译无误将弹出编译成功对话框;编译如有错误,请根据“调试信息”框中的错误提示修改原理图,直至编译通过。生成成功后将弹出成功对话框。(如图10所示)图10编译模式按钮及编译成功对话框3生成自定义芯片原理图编译通过后,可根据用户需要,设计生成自定义芯片。打开“Tools”菜单,选择“CreatSymbolForCurrentFile”菜单项(如图11所示),就可生成自己定义的芯片,芯片的名称就是编译通过的原理图的名称。用户即可在“Symbol”对话框“Libraries”文本框的“Project”菜单下找到自己设计的芯片(如图12所示)。图11自定义芯片生成菜单项图12自定义芯片选择界面4创建向量波形文件当原理图编译完成后,需要新建波形文件,以便利用波形文件对前面完成的设计进行仿真分析。本过程需要在SimulateMode(仿真模式)下进行。打开“新建”窗口,在“OtherFiles”标签中选择“VectorwaveformFile”(如图13所示),按下“OK”按钮,即可新建一个波形文件。图13波形文件新建界面波形文件编辑界面如下图14所示,分为两个区域,左侧为节点编辑区,右侧为波形仿真区;图14波形文件新建界面在左侧节点编辑区的空白处双击鼠标左键,弹出“节点/总线插入”对话框(如图15所示),添加输入、输出节点;图15节点/总线插入界面点击图16中的“NodeFinder”按钮,将弹出“NodeFinder”窗口,如图17所示。在该界面“Filter”下拉菜单中选择“Pins:all”,点击“Start”按钮后,在窗口的左半边的“NodeFinder”列表框中,将显示原理图中所有的输入、输出节点,可从中选择你所需要的节点,添加到右侧的“SelectedNodes”列表框中(如图18所示)。被选中的节点信号将作为波形文件的输入输出信号。点击“OK”按钮,即可回到波形文件编辑界面(如图18所示)。接下来,可在波形文件编辑界面右侧的波形仿真区中,按周期设置输入节点信号的初始值(周期长度可在菜单Time—GridSize中设置,如图19所示)。设置初值的方法是:按住鼠标左键,选中某节点信号的某个周期,从“波形编辑器”中选择适当的值,即可完成初始值的设定,如图19所示。设定完毕,就可以单击运行仿真按钮(如图20所示)进行波形仿真,分析输入输出波形了。仿真的结果如图21所示。图16“NodeFinder”窗口界面图17“SelectedNodes”窗口界面 图18波形文件编辑界面图19波形文件周期长度的设定界面波形编辑器波形编辑器图20波形文件输入节点信号初始值的设定界面图21波形仿真结果界面由于仿真时默认采用Timing(时序)模式,因此输出波形中会出现延时或毛刺现象。要解决这个问题,可以在菜单Processing—SimulatorSettings中将mode改为Functional(功能)模式(如图23所示),重新仿真即可。修改模式后,仿真结果如图24所示,延时和毛刺现象消失。图23波形仿真模式设置界面图24“Functional”模式下波形仿真结果界面三)、器件的选择与引脚的锁定与下载1、器件的选择在管理窗口中选择Processing/CompilerSettings,点击Chips&Dvices,这时弹出如下窗口(本实验箱按图中进行选择)2、输入、输出管脚配置:点击工具栏的低层编辑和寻找节点,就会跳出低层编辑示意图,如图2-66所示。该图的左边为输入、输出管脚以及寄存器的浏览器,在Filter框中选取不同的过滤器(如Pins:all,Pins:unassigned,Pins:assigned等),点击Start按扭,在Nodesfound框中就会有不同的结果。选取Pins:unassigned点击Start按扭后,在Nodesfound框会列出所有目前尚未分配的输入、输出管脚名称。用鼠标左键拖住该名称放到右面floorplan对应的I/O或全局输入管脚上即可。拖放成功后再点击start按扭,Nodefound框的内容就会得到刷新。按此方法可以逐一将对应的管脚分配完毕,再次点击Startcompiler就可以形成“counter.pof”等可以下载的文件。(四)、器件的下载编程与硬件实现实验箱电路板上的连线用三位拨码开关代表译码器的输入A、B、C,分别与EPF1K100QC208-3芯片的管脚相连;用LED灯或另八位拨码开关来表示译码器的输出,将D0...D7对应的管脚分别与8只LED或拨码开关等相连(A-103,B-104,C-111,D0~D7:161,162,163,164,166,167,168,169).三、实验报告1.总结用QuartusII开发系统对逻辑电路进行设计、仿真的操作步骤。2.讨论用CPLD/FPGA开发系统进行逻辑电路设计的特点与优越性。3.讨论在设计过程中遇到的问题、解决的过程以及收获体会。实验二全加器设计、仿真与下载实验目的1.熟练掌握MAX+PLUSⅡ的使用。2.掌握一位全加器的设计方法、学会用一位全加器组成四位全加器。3.掌握CPLD/FPGA开发系统硬件电路的下载及测试。4.学习模块化电路设计方法。实验仪器设备1.PC机一台2.KHF-5CPLD/FPGA实验开发系统一套。实验要求1.预习组合电路中一位、四位全加器的设计方法。2.预习CPLD/FPGA开发系统(硬件电路)中的开关及发光管的使用方法。3.预习本次实验内容。4.用图形编辑方法输入电路。四.实验内容及操作步骤1.设计一位全加器图2-1一位全加器(1)完成电路的输入,以及对引脚的命名等(参考电路如图2)。(2)对一位全加器进行编译、仿真与下载。(3)点击File菜单的CreateDefaultSymbol项,创建缺省模块。2.利用一位全加器模块进行四位全加器的设计。(1)创建一个新的项目,新建文件。在新打开的图形编辑区双击左键,从EnterSymbol对话框中的用户目录(自创目录)下选择模块名。(2)连接线路,并进行编译(如图6)。(3)点击Assign菜单的Device项选择芯片。(4)管脚分配(建议使用16个数据开关(SW1——SW16)观察,对应实验箱:输入P103、P104、P111、P112、P113…P128,输出可用发光二极管P161(D4),P162(D5),P163,P164(D6),P166(D7),P167,P168,P169,P170,P172,P173,P174,P175,P176,P177,P179。)。(5)后编译,并进行下载。(6)仿真并记录仿真波形。(7)观察并记录实验结果。图2-2四位全加器五、用VHDL设计一位半加器,创建缺省模块,再用原件例化方式进行一位全加器的设计,最后设计为4位全加器。六.实验报告1.总结模块化电路设计的方法。2.总结quartusⅡ进行电路设计的实质。3.总结用quartusⅡ进行电路设计的一般步骤。实验三基本组合逻辑电路设计一实验目的1掌握VHDL语言的基本结构及设计的输入方法。2掌握VHDL语言的组合电路设计方法。二几种常用的组合逻辑电路(一)8-3优先编码器(参考P78例3-32)实验原理常用的编码器有:4-2编码器、编码器、16-4编码器,下面我们用一个8-3编码器的设计来介绍编码器的设计方法。A编码器BCDEA编码器BCDEGENDOUT0DOUT1DOUT2FH 图3-18-3编码器表3-18-3优先编码器真值表输入输出ENABCDEFGHDOUT0DOUT1DOUT20XXXXXXXXZZZ11XXXXXXX000101XXXXXX1001001XXXXX01010001XXXX110100001XXX0011000001XX10110000001X011100000001111实验步骤:1编程实现设一个8-3优先编码器(可用if…elseif语句或条件信号赋值语句)。2将编辑好的电路进行编译和仿真。3输入信号接实验箱的拨码开关,输出信号接发光二极管。改变拨码开关的状态,观察实验结果。(二)多路数据选择器实验原理在VHDL语言中描述一个8选一的多路选择器的方法有多种,例如:在一个进程中使if-then-else语句;在一个进程中使用case语句;使用withselect构造或使用结构VHDL。推荐进程中使用case语句。但无论使用哪一种描述方法,综合得到的结果是相同的。8选1多路选择器结构图如图3-2所示。(可参考教材P42-44例1-3)图3-28选1多路选择器实验内容:设计并实现一个8选1多路数据选择器(可用case语句、条件信号赋值语句、选择信号赋值语句)。实验步骤:1编程实现设一个8选1多路数据选择器。2将编辑好的电路进行编译和仿真。3输入信号接实验箱的拨码开关,输出信号接发光二极管。改变拨码开关的状态,观察实验结果。(三)七人表决器实验原理:使用7个电平开关作为表决器的7个输入变量,输入为电平“1”时表示表决者“赞同”,输入为电平“0”时表示表决者“不赞同”。当表决器的7个输入变量中有不少于4个输入变量输入“1”,那么表决结果输出逻辑高电平,表示表决“通过”,否则,输出逻辑低电平,表示表决“不通过”。七人表决器的可选设计方案非常多,可以采用使用全加器的组合逻辑。使用VHDL进行设计的时候,可以选择行为级描述、寄存器级描述,结构描述等方法。当采用行为级描述的时候,采用一个变量记载选举通过的总人数。当这个变量的数值大于等于4时,表决通过,绿灯亮;否则表决不通过,黄灯亮。因此,设计时,需要检查每一个输入的电平,并且将逻辑高电平的输入数目进行相加,并且进行判断,从而决定表决是否通过。实验内容1.使用VHDL实现上述描述。2.下载并且验证结果。三实验报告:1.简要说明实验步骤。2.写出实验用的VHDL源程序。3.记录仿真结果(波形),说明输出延时情况。4.记录可编程器件与拨码开关和发光二极管的连接情况。5.记录实验结果,并分析其结果的正确性。实验四基本时序逻辑电路的VHDL模型一、实验目的1掌握简单的VHDL程序设计。2掌握VHDL语言对基本时序逻辑电路的建模。二、实验内容分别设计并实现锁存器、触发器的VHDL模型。寄存(锁存)器1实验原理寄存器用于寄存一组二值代码,广泛用于各类数字系统。因为一个触发器能储存1位二值代码,所以用N个触发器组成的寄存器能储存一组N位的二值代码。2实验内容:实现同步锁存器(同步锁存器指复位和加载功能全部与时钟同步,复位端的优先级最高。在数字系统设计时,采用完全同步的锁存器,可以避免时序错误。)附:一个8位寄存器的VHDL描述。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYREGISPORT(D:INSTD_LOGIC_VECTOR(0TO7);CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(0TO7));ENDREG;ARCHITECTUREARTOFREGISBEGINPROCESS(CLK)BEGINIF(CLK'EVENTANDCLK=‘1’)THENQ<=D;ENDIF;ENDPROCESS;ENDART;(二)触发器实验内容:1、D触发器1)、带异步置位的D触发器(当时钟信号或置位信号有跳变时激活进程。如果置位信号有效(高电平),D触发器被置位,输出信号高电平,如果置位信号无效,此时时钟信号出现上升沿,D触发器输出信号变为输入信号);2)、带异步复位和置位的D触发器(当时钟信号、复位信号或置位信号有跳变时激活进程。如果复位信号有效(高电平),D触发器被复位,输出信号低电平;如果复位信号无效置,而置位信号有效(高电平),D触发器被置位,输出信号高电平,如果复位信号和置位信号都无效,此时时钟信号出现上升沿,D触发器输出信号变为输入信号)。附:最简单的D触发器,没有复位和职位信号。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDCFQISPORT(D,CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDDCFQ;ARCHITECTUREARTOFDCFQISBEGINPROCESS(CLK)BEGINIF(CLK'EVENTANDCLK=‘1’)THEN--时钟上升沿触发Q<=D;ENDIF;ENDPROCESS;ENDART;上述触发器为最简单的D触发器,没有复位和职位信号。根据上例写一个2、JK触发器从真值表可以看出,PRN=0时,触发器置数,Q=’1’;CLRN=0时,触发器清零,Q=’0’;当PRN=CLRN=J=K=’1’时,在CLK上升沿的时候,触发器翻转。3)RS触发器四、实验报告1、简要说明实验步骤。2、写出实验用的VHDL源程序。3、记录仿真结果(波形),说明输出延时情况。4、记录实验结果,并分析其结果的正确性。5、说明实验中遇到的问题及解决方法,写出实验心得体会。实验五:计数器及七段数码显示译码器设计一、实验目的:1进一步掌握VHDL语言的基本结构及设计的输入方法;2掌握VHDL语言的时序电路的设计方法;3学习七段数码显示译码器设计;4学习VHDL的CASE语句应用及多层次设计方法。二、实验内容(一)七段数码显示译码器设计七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是二进制的,所以输出表达式都是十六进制的,为了满足十六进制的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中实现。作为七段译码器,输出信号LED7S的输出分别接数码管的7个段。(参考P141图4-87)。(二)计数器1、设计一个带使能输入、进位输出及同步清0的增1十进制计数器,波形图见图管脚分配:输入时钟管脚clk-P78;同步清0管脚clr-P103,使能输入管脚en-P104,输出接一个数码管,管脚分配对应为161、162、163、164、166、167、168;进位位管脚P111(或170)。2、设计一个用数码管显示的60进制同步计数器,个位显示0~9,十位显示0~5。算法设计:个位计数器的模M=10,十位计数器的模M=6。用IF语句描述计数器。管脚分配:输入时钟管脚clk-P78,两个数码管管脚分别为:SEG1(a,b,c,d,e,f,g,p)——P161,P162,P163,P164P166,P167,P168,P169。SEG2(a,b,c,d,e,f,g,p)——P170,P172,P173,P174,P175,P176,P177,P179附:24进制计数器libraryieee;-------调用库useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytwelveto1is-------实体描述port(clk:instd_logic;--------端口说明outputa:outstd_logic_vector(0to6);outputb:outstd_logic_vector(0to6));endtwelveto1;architecturearch_twelveto1oftwelveto1is--------结构体描述signalsa:std_logic_vector(3downto0);signalsb:std_logic_vector(3downto0);beginprocess(clk)--------进程语句描述beginif(clk'eventandclk='1')then--------二十四归一条件语句模块if(sa=3andsb=2)thensa<="0000";sb<="0000";elseifsa=9thensa<="0000";sb<=sb+1;elsesa<=sa+1;endif;endif;endif;endprocess;withsaselect--段码转换模块outputa<="0110000"when"0001",--1 "1101101"when"0010", --2 "1111001"when"0011", --3 "0110011"when"0100", --4 "1011011"when"0101", --5 "1011111"when"0110", --6 "1110000"when"0111", --7 "1111111"when"1000", --8 "1111011"when"1001", --9 "1110111"when"1010", --A "0011111"when"1011", --b "1001110"when"1100", --C "0111101"when"1101", --d "1001111"when"1110", --E "1000111"when"1111", --F "1111110"whenothers; --0withsbselect--段码转换模块outputb<="0110000"when"0001",--1 "1101101"when"0010", --2 "1111001"when"0011", --3 "0110011"when"0100", --4 "1011011"when"0101", --5 "1011111"when"0110", --6 "1110000"when"0111", --7 "1111111"when"1000", --8 "1111011"when"1001", --9 "1110111"when"1010", --A "0011111"when"1011", --b "1001110"when"1100", --C "0111101"when"1101", --d "1001111"when"1110", --E "1000111"when"1111", --F "1111110"whenothers; --0endarch_twelveto1;3、设计一个分频电路:已知cpld/fpga信号源脉冲频率为50M,试编写一分频程序,得到一周期为1秒(频率为1Hz4、设计60进制计数器,计数频率为1Hz,并用七段数码管显示。三、实验报告1、简要说明实验步骤。2、写出实验用的VHDL源程序。3、记录仿真结果(波形),说明输出延时情况。4、记录实验结果,并分析其结果的正确性。5、说明实验中遇到的问题及解决方法,写出实验心得体会。实验六简单数字钟设计数字钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。干电路系统由秒信号发生器、“时、分、秒”计数器组成。“秒计数器”采用60进制计数器,每累计60秒发现一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。基本要求:实现时分秒的准确计时(可采用完全VHDL实现;也可用混合输入设计,底层VHDL,顶层用原理图电路设计)拓展要求:1、加入校时校分电路;2、加入整点/定点报时功能。附:1、串行扫描显示电路设计:通过用VHDL语言设计串形扫描显示电路用VHDL设计,示例如下:、libraryieee;-------调用库useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytcxis-------实体说明port(inclk:instd_logic;-------输入输出定义outa:outstd_logic_vector(6downto0);outb:outstd_logic_vector(2downto0));endtcx;architecturearth_tcxoftcxis--------结构体定义signalma:std_logic_vector(2downto0);signalmb:std_logic_vector(3downto0);signalfp:std_logic_vector(24downto0);signalf:std_logic;beginprocess(inclk)---------进程说明beginif(inclk'eventandinclk='1')then---------分频模块iffp=24999999thenfp<="0000000000000000000000000";f<=notf;elsefp<=fp+1;endif;endif;endprocess;process(f)---------扫描输出模块beginif(f'eventandf='1')thenma<=ma+1;mb<=mb+1;endif;endprocess;Outb<=ma;withmbselect---------段码转换模块outa<= "0110000"when"0001", --1 "1101101"when"0010", --2 "1111001"when"0011", --3 "0110011"when"0100", --4 "1011011"when"0101", --5 "1011111"when"0110", --6 "1110000"when"0111", --7 "1111111"when"1000",--8 "1111011"when"1001", --9 "1110111"when"1010", --A "0011111"when"1011",--b "1001110"when"1100", --C "0111101"when"1101", --d "1001111"when"1110", --E "1000111"when"1111", --F "1111110"whenothers; --0endarth_tcx;动态显示的十进制计数器libraryieee;--调用库useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycounteris-------实体说明port(inclk:instd_logic;--输入输出定义outa:outstd_logic_vector(0to7);outb:outstd_logic_vector(2downto0));endcounter;architecturearth_tcxofcounteris--------结构体定义signalst:std_logic_vector(2downto0);signalma:std_logic_vector(3downto0);signalfp:std_logic_vector(15downto0);signalhm:std_logic_vector(8downto0);signalf,fpb:std_logic;beginprocess(inclk)---------进程说明beginif(inclk'eventandinclk='1')then---------1KHz分频模块iffp=24999thenfp<="0000000000000000";f<=notf;elsefp<=fp+1;endif;endif;endprocess; process(fpb)beginif(f'eventandf='1')thenst<=st+1;endif;endprocess;---------1Hz分频模块 process(f)beginif(f'eventandf='1')thenifhm=499thenhm<="000000000";fpb<=notfpb;elsehm<=hm+1;endif;endif;endprocess;process(fpb)beginif(fpb'eventandfpb='1')thenifma=9then ma<="0000"; elsema<=ma+1;en

温馨提示

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

评论

0/150

提交评论