1数字逻辑实验报告姓名:任凯学号:139074018班级:计1312实验一3-8译码器设计(原理图设计输入)(本实验将详细介绍Altera公司MAX+PlusⅡ软件的基本应用)一、实验目的1.通过一个简单的3-8译码器的设计,让学生掌握用原理图描述组合逻辑电路的设计方法。2.掌握组合逻辑电路的软件仿真方法。3.初步了解可编程器件设计的全过程。二、实验步骤1.设计输入1.1启动MAX+PlusⅡ软件包,选择File/New菜单,弹出设计输入选择窗口,如下图1.1所示:1.2选择GraphicEditorFile,单击“OK”按钮,打开原理图编辑器,进入原理图设计输入电路编辑状态。如下图1.2所示:1.3设计的输入1)放置一个器件在原理图上a.在原理图的空白处双击鼠标左键(或者单击右键选择Symbol/EnterSymbol快捷菜单),弹出图1.3所示对话框。b.在SymbolName框中输入元件名称或用鼠标在元件库中选取所需元件,按下“OK”按钮即可。c.对于相同的元件,只要按住Ctrl键的同时拖动鼠标即可进行复制;也可采用复制/粘贴的方法进行复制。d.一个完整的电路应包括:输入端口INPUT、电路元器件的集合、输出端口OUTPUT。e.图1.4为3-8译码器元件的安放结果。3图1.42)在器件的管脚上添加连线把鼠标移到元件引脚附近,鼠标指针由箭头变为十字,按住鼠标左键拖动即可画出连线。图1.5为3-8译码器原理图。4图1.53)标记输入/输出端口属性双击输入/输出端口的“PIN_NAME”,变成黑色时输入标记符并回车确认。本译码器将三个输入端标记为A、B、C,输出端标记为D0~D7。标记输入/输出端口后的3-8译码器原理图如图1.6所示。5图1.64)保存原理图对于新建文件,单击保存按钮会出现“SaveAs(另存为)”对话框,此时可选择(或输入)保存路径和文件名称。原理图的文件扩展名为“*.gdf”。5)设置为当前文件点击File/Project/SetProjecttoCurrentFile可将当前编辑的文件设置为当前文件。当打开了几个项目文件时,这个步骤非常重要,否则将会出错。*初学者一定要注意这一步骤。至此,已经完成了一个电路的原理图设计输入的整个过程。2.电路的编译与适配2.1选择芯片型号点击Assign/Device菜单选择当前项目文件欲设计实现的实际芯片来进行编译适配。本例选择EPLDEPF10K10LC84-4来实现,如图2.1所示。6图2.1如果不选择适配芯片,开发软件将自动把所有适合本电路的芯片一一进行编译适配,将会耗费大量时间。2.2编译适配点击MAX+PlusⅡ/Compiler菜单,按下弹出窗口(图2.2)中的Start按钮开始进行编译,生成下载文件。如果编译前选择的芯片是CPLD,则生成的下载文件为“*.pof”文件(编程目标文件);如果选择的芯片是FPGA,则生成“*.sof”文件(SRAM配置目标文件)。这个文件用于硬件下载编程时调用。同时还生成一个“*.rpt”报告文件,用于详细查看编译结果。如果编译时出现错误,则要修改设计后重新编译。图2.2如果设计的电路顺利地通过了编译,当电路不复杂的情况下,就可以对芯片进行编程下载,直到实现所设计的硬件电路,至此,已经完成了一个EDA的设计与实现的全过程。如果电路足够复杂,就要进行仿真。7图2.33.电路仿真与时序分析MAX+PlusⅡ支持电路的功能仿真(前仿真)和时序仿真(后仿真)。众所周知,开发人员在进行电路设计时,非常希望借助比较先进、高效的仿真工具来节省设计过程的时间和成本。因此,EDA工具提供的强大的(在线)仿真功能迅速得到了电子工程设计人员的青睐,这也是当今EDA(CPLD/FPGA)技术非常火爆的原因之一。下面通过本实验来介绍MAX+PlusⅡ仿真功能的基本应用。3.1添加仿真激励信号波形1)启动MAX+PlusⅡ/WaveformEditor菜单,进入波形编辑窗口,如图3.1所示。8图3.12)将鼠标指针移到空白处,单击鼠标右键,选择快捷菜单中的“EnterNodesfromSNF…”并按鼠标左键确认,出现图3.2所示的对话框。图3.23)单击“List”和“=”按钮,选择欲仿真的I/O管脚。4)单击“OK”按钮,列出仿真电路的输入、输出管脚图如图3.3所示。在本列中,3-8译码器的输出为灰色,表示未仿真前其输出是未知的。9图3.35)调整管脚顺序,以符合常规习惯。调整时只需选中某一管脚并按住鼠标左键将其拖到相应位置即可完成。如图3.4。图3.46)准备为电路输入端口添加激励波形。选中欲添加信号的管脚,窗口左边的信号源即刻变成可操作状态,这是就可以根据实际电路要求选择信号源种类。本例电路中,选择时钟信号就可以满足仿真要求。7)选择仿真时间。仿真时间长短由电路实际要求确定。点击“File/EndTime…”菜单,本实验选择软件默认时间1us就能观察到3-8译码器的8个输出状态。8)为A、B、C三个端口添加输入信号。先选中A输入端,然后再点击窗口左边的时钟信号源图标添加激励波形,出现图3.5所示的对话框。10图3.5本例中,选择初始电平为“0”,时钟周期倍数为“1”,按下“OK”按钮确认。这时已为输入端A添加了完整的激励信号,点击全屏显示按钮后如图3.6所示。图3.6根据电路要求编辑另外两路输入端口的激励信号波形。本实验中,假设3-8译码器的A、B、C三路输入信号的频率分别为1、2、4倍关系,则译码输出顺序就符合常规的观察习惯。按上述方法,为B、C两路输入端口添加激励波形后,点击全屏显示按钮后如图3.7所示。119)保存激励信号编辑结果。使用File/Save或关闭当前波形编辑窗口均会出现图3.8所示的对话框,单击“OK”按钮保存激励信号波形。图3.8*注意不要随意改动文件名(仿真波形文件应与设计文件同名,仅扩展名不同)。3.2电路仿真电路仿真分为功能仿真(前仿真)和时序仿真(后仿真),而时序仿真覆盖了功能仿真,故本实验直接使用时序仿真。1)点击“MAX+PlusⅡ/Simulator”菜单,弹出图3.9所示的对话框。12图3.92)确定仿真时间。EndTime为“1”的整数倍。如果在添加激励信号时未设置结束时间,则此时仿真窗口中的“EndTime”参数就不能修改。本例中,使用默认时间,单击“Start”按钮开始仿真。如果出现错误,一般是激励信号添加有误,查找并修正错误后重新仿真。本例无错误,出现图3.10的提示。图3.103)观察仿真结果。单击激励输出波形文件“”按钮,波形如图3.11所示。13图3.114)从上图可见,所设计的3-8译码器顺利的通过了仿真,设计完全正确。下面将上图放大,仔细观察一下电路的时序。在窗口空白处单击鼠标左键,出现测量标尺,然后将标尺拖至欲测量的地方,查看延时情况。4.管脚的重新分配与定位启动MAX+PlusⅡ/FloorplanEditor菜单,出现如图4.1所示的芯片管脚自动分配画面(在芯片的空白处双击鼠标,可在芯片和芯片的内部逻辑块之间切换)。*注意:不要在芯片的内部逻辑视图下进行管脚分配。图4.1FloorplanEditor显示的是该设计项目的管脚分配图,它是由软件自动分配的。用户可以随意改变管脚分配,以方便与所设计的外设电路进行匹配。管脚编辑过程如下:4.1按下窗口左边的手动分配图标所有管脚将会出现在窗口中,如图144.2所示。图4.24.2用鼠标按住某输入/输出端口,并拖到下面芯片的某一管脚上,便可完成一个管脚的重新分配。注意:芯片上有一些特定功能的管脚,进行管脚编辑时,不要对这些管脚进行分配。另外,在芯片器件选择中,如果选的是auto,则不允许对管脚进行在分配。当对管脚进行二次调整以后,一定要再编译一次,否则程序下载以后,其管脚功能还是为当初的自动分配状态。5.器件的下载编程与硬件实现5.1实验箱电路板上的连线用三位拨码开关代表译码器的输入A、B、C,将其分别与EPF10K10芯片的对应管脚相连。用LED灯来表示译码器的输出,将D0……D7对应的管脚分配与8只LED相连。5.2器件的编程下载1)启动MAX+PlusⅡ/Programmer菜单。如果是第一次启用,将会出现填写硬件类型对话框,请选择“byteblaster”并按下“OK”按钮确认即可。此后,如果需要修改硬件类型,可以在打开MAX+PlusⅡ/Programmer菜单,选择Options/HardwareSetup菜单。2)选中主菜单下的JTAG/Multi-DeviceJTAGChain菜单项(第一次启用可能会出现问话框,视实际情况回答确认)。3)启动JTAG/Multi-DeviceJTAGChainSetup…菜单项,出现图4.3的对话框15图4.34)按下“SelectProgrammingFile…”按钮,选择要下载的“.sof”文件,然后按“Add”按钮将其加到文件列表中,如图4.4所示。165)选择完下载文件后,单击“OK”按钮,出现图4.5所示的下载编程界面图4.5176)单击“Configure”按钮,进行下载编程。如果不能正确下载,请点击图4.4的“DetectJTAGChainInfo”按钮进行JTAG测试,查找原因。直到完成下载,按“OK”键退出。[注]检查点提示:电路是否已经通过软件仿真?管脚二次分配后有没有重新编译?是否已加电?下载电缆是否用错?硬件类型设置是否正确?CPLD/ISP切换开关是否正确?JTAG接口有无插反?至此,已完成了可编程器件的从设计到下载实现的整个过程。MAX+PlusⅡ更多的功能请参考相关资料。7)结合电路功能,在实验箱上观察设计实现的结果。三、实验报告1、填写下表(填灯亮(L)或灭(M))ABCLED0LED1LED2LED3LED4LED5LED6LED7000LMMMMMMM100MLMMMMMM010MMLMMMMM110MMMLMMMM001MMMMLMMM101MMMMMLMM011MMMMMMLM111MMMMMMML2、结合本次实验,简述原理图输入法设计组合电路的步骤。(1)仔细分析设计要求,确定输入、输出变量:在本次试验中,需要有三个变量的输入,而输出则是八位;(2)根据输入输出之间的因果关系,列出输入输出对应关系表,即真值表:将上一步骤的输入输出量进行抽象,对输入和输出变量赋予0、1值,作出真值表;(3)根据真值表填卡诺图,写输出逻辑函数表达式的适当形式,即函数表达式;(4)根据所得到的函数表达式画出逻辑电路图,完成最终实验要求;3、时序仿真波形中,输出波形与输入波形是否同步变化?如何解释输出波形中存在的毛刺?18(1)如上图所示,在输入信号进入之后,输出信号会有短暂的滞后,并不能同步变化;(2)解释:在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的(冗余)消去项,但是不能避免功能冒险,二是在芯片外部加电容。三是增加选通电路。在组合逻辑中,由于多少输入信号变化先后不同、信号传输的路径不同,或是各种器件延迟时间不同(这种现象称为竞争)都有可能造成输出波形产生不应有的尖脉冲(俗称毛刺),这种现象成为冒险。(3)解决办法:1.通过改变设计,破坏毛刺产生的条件,减少毛刺发生。例如,数字电路设计中,常常采用GrayCode计数器取代普通计数器,因为GrayCode计数器的输出每次只有一位跳变,消除了竞争冒险发生的条件,避免了毛刺的产生。2.毛刺并不是对所有的输入都有危害,例如:D触发器的D输入端,只要毛刺不出现在时钟的上升沿且满足数据的建立和保持时间,就不会对系统造成危害,因此可以说D触发器的D输入端对毛刺不敏感。因此,在系统中尽可能采用同步电路,因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。(由于毛刺一般都很短,多为几纳秒,基本上都不可能满足数据的建立和保持时