1、第第 1 1 页页第三章 原理图输入设计方法第第 1 1 页页第三章 原理图输入设计方法第三章 原理图输入设计方法第第 2 2 页页第三章 原理图输入设计方法3.1 原理图设计方法1原理图编辑流程准备:安装maxplusII并进入该环境第第 3 3 页页第三章 原理图输入设计方法STEP2:输入设计项目原理图/VHDL文本代码STEP3:存盘,注意VHDL文件取名!STEP4:将设计项目设置成ProjectSTEP8:选择目标器件 STEP12:硬件测试STEP9:引脚锁定并编译STEP7:功能仿真和波形分析STEP6:建立仿真波形文件STEP5:启动编译STEP11:编程 下载/配置STEP
2、1:建立工作库文件夹STEP10:时序仿真和延时分析第第 4 4 页页第三章 原理图输入设计方法1.建立一个新的原理图文件1File New1选择Graphic Editor file(gdf 格式文件)第第 5 5 页页第三章 原理图输入设计方法2.输入元件1Max+plusII的内建函数较大规模器件库mega_lpm,一些比较大的并可做参数设置的元件,使用中需要对其参数进行设置,称为参数可设置兆功能库.中规模器件库mf,数字电路中一些中规模器件库,如74系列逻辑器件。基本元件库primprim,常用基本元件库,如AND、OR、VCC、GND、INPUT、OUTPUT第第 6 6 页页第三章
3、 原理图输入设计方法调出符号1双击空白处1单击右键enter symbol第第 7 7 页页第三章 原理图输入设计方法可以直接输入符号名,如input,and2,7474等符号库,第一行是用户的工作库(Work Library)路径。点击任一个库的路径,都会在Symbol Files下显示所有的符号文件名。最后点击“ok”第第 8 8 页页第三章 原理图输入设计方法元件的编辑1移动1旋转1.右键菜单2.Edit菜单1删除1复制1.简单的方法,“ctrl移动”第第 9 9 页页第三章 原理图输入设计方法1简单的方法:1.将两个元件的引脚处对齐,拖动一个元件,自动形成连线2.用鼠标画两个引脚的连线
4、不能重叠两个引脚的连线不能重叠连线不能进入元件的虚线框内部连线不能进入元件的虚线框内部按下橡皮筋按钮连线第第 1010 页页第三章 原理图输入设计方法引脚的命名1双击引脚名1注意1.第一个字符必须为英文,以后可用下划线、数字等组合2.下划线前后要有字母或数字3.“/”“-”“%”都是非法的4.大小写的意义一样第第 1111 页页第三章 原理图输入设计方法总线1先画一条线单击右键 Line style粗线1引脚名或总线名的规则为*m.n或者n.m,其中mn0,最多可以代表256个引脚名。一般采用n1.0。第第 1212 页页第三章 原理图输入设计方法节点1引脚间的连线(细线)可以称为节点,节点是
5、可以命名的,命名规则与引脚相同。1如果不想连线太多,可以对本质上相连的节点取一致的名称选中一条细线,选中一条细线,当当有小有小闪烁时闪烁时,表,表示可以进行命名示可以进行命名第第 1313 页页第三章 原理图输入设计方法3.保存文件1注意最上面的标题栏:有可能不是 Untitled11这里是指示环境的当前设计项目注意此时的文件名“Untitled1”第第 1414 页页第三章 原理图输入设计方法第第 1515 页页第三章 原理图输入设计方法1注意1.为了方便同一个项目下的文件查找方便,最好事先特别建立一个目录为该项目的专建立一个目录为该项目的专用目录用目录,目录下存放所有相关的文件2.文件的路
6、径不能包含汉字,不能用空格文件的路径不能包含汉字,不能用空格3.保存的文件名不要和库文件名相同,如保存的文件名不要和库文件名相同,如and2、7402等等等等第第 1616 页页第三章 原理图输入设计方法4.将当前设计设置为工程文件将当前设计设置为工程文件新建一个Project第第 1717 页页第三章 原理图输入设计方法5.编译Compile1按下1.若有错误双击Message栏中的红字第第 1818 页页第三章 原理图输入设计方法第第 1919 页页第三章 原理图输入设计方法1正确注意:此时菜单栏中注意:此时菜单栏中出现了出现了Processing选项选项编译器网编译器网表表cnf数据库建
7、数据库建库库逻辑综合逻辑综合逻辑分割逻辑分割适配适配rpt时序仿真网时序仿真网表文件表文件snf装配装配第第 2020 页页第三章 原理图输入设计方法1时序仿真与功能仿真第第 2121 页页第三章 原理图输入设计方法编译器网编译器网表表cnf数据库建数据库建库库功能仿真网功能仿真网表文件表文件snf第第 2222 页页第三章 原理图输入设计方法6.建立仿真文件1创建仿真波形文件第第 2323 页页第三章 原理图输入设计方法1注意,波形文件(scf)的名称一定要与对应的原理图文件的名称(gdf)相同第第 2424 页页第三章 原理图输入设计方法第第 2525 页页第三章 原理图输入设计方法123
8、4第第 2626 页页第三章 原理图输入设计方法第第 2727 页页第三章 原理图输入设计方法对单个输入端子设置波形波形为低电平波形为低电平波形为高电平波形为高电平波形为不确定态波形为不确定态波形为高阻态波形为高阻态波形反相波形反相为波形赋时钟值为波形赋时钟值为波形赋计数器值为波形赋计数器值第第 2828 页页第三章 原理图输入设计方法对成组输入端子设置波形为群组信号赋值为群组信号赋值怎样合组?第第 2929 页页第三章 原理图输入设计方法7.启动仿真1按下仿真按钮第第 3030 页页第三章 原理图输入设计方法设置仿真栅格单位的意义1仿真栅格单位是设置时钟周期的最小单位,即时钟周期最小等于栅格
9、单位,最大等于栅格单位的倍数。P46(思考题:如何设置Grid Size?时钟信号周期如何设置?)仿真栅格单位Grid Size:规定每个栅格的最小时间单位,时间值显示在每个栅格竖线的上方。第第 3131 页页第三章 原理图输入设计方法Grid Size第第 3232 页页第三章 原理图输入设计方法设置仿真终止时间的意义1 仿真终止时间End Time:规定何时终止施加输入向量。系统默认为1us,对简单逻辑电路足够了,但复杂电路需要仿真的时间远远超过1us,要人工重新设置。(如何设置End Time?)第第 3333 页页第三章 原理图输入设计方法End Time第第 3434 页页第三章 原
10、理图输入设计方法 设置观察时间范围的意义1观察时间范围Time Range:规定仿真波形的可观察范围,要求Time RangePin/Location/Chip第第 4343 页页第三章 原理图输入设计方法第第 4444 页页第三章 原理图输入设计方法注意分配引线端子后一定要重新编译同理,对原理图做任何修改后,也一定要重新编译第第 4545 页页第三章 原理图输入设计方法第第 4646 页页第三章 原理图输入设计方法10.时序仿真和延时分析第第 4747 页页第三章 原理图输入设计方法11.器件编程(下载)第第 4848 页页第三章 原理图输入设计方法12.器件测试1GW48系列实验开发系统第
11、第 4949 页页第三章 原理图输入设计方法创建自己的元件1首先先检查自己的元件有无错误Save&Check第第 5050 页页第三章 原理图输入设计方法3.2 1位全加器设计11位加法器的功能:实现两个1位二进制数相加1.半加器2.全加器只考虑本位两个一位二只考虑本位两个一位二进制数进制数A和和B相加相加,而不而不考虑低位进位考虑低位进位既有本位两个一位二进既有本位两个一位二进制数制数A和和B相加相加,又有低又有低位进位位进位Ci第第 5151 页页第三章 原理图输入设计方法1位半加器的真值表ABSCo0000011010101101表中的A和B分别表示两个相加的一位二进制数,S是本位和,C
12、o是进位位。第第 5252 页页第三章 原理图输入设计方法1SAB+AB=A+B1Co=AB第第 5353 页页第三章 原理图输入设计方法1位全加器的定义1全加:将本位两个1位二进制数和来自低位的进位位相加1令A和B分别为两个相加的1位二进制数,Ci是来自低位的进位位;S是本位和;Co是进位位。第第 5454 页页第三章 原理图输入设计方法全加器的真值表CiABSCo0000000110010100110110010101011100111111第第 5555 页页第三章 原理图输入设计方法S的卡诺图的卡诺图第第 5656 页页第三章 原理图输入设计方法ABCBACBACBACSiiiiABB
13、ACBABACiiiiiiiiCSCSSCiCBAiCBAiCBA第第 5757 页页第三章 原理图输入设计方法Co的卡诺图的卡诺图 第第 5858 页页第三章 原理图输入设计方法iiioCBAABBACBACABCiCBAiCBAiiioCBAABBACBACABCiiioCBAABBACBACABC第第 5959 页页第三章 原理图输入设计方法原理图底层电路设计1原理图由若干个元件组合而成,当有些元件是多个简单元件的组合电路时,为了精确仿真组合元件的特性,必须单独设计组合元件的原理图设计,这种设计称为底层电路设计。第第 6060 页页第三章 原理图输入设计方法原理图顶层电路设计1当所有的底
14、层元件多设计完毕并生成包装好的单一元件后,再设计一个总原理图,把所有的底层元件调出来,进行导线连接、仿真、编程下载,这种设计称为顶层电路设计。第第 6161 页页第三章 原理图输入设计方法1分层设计的好处分层设计的好处1.增强设计的可读性,避免在设计中出现增强设计的可读性,避免在设计中出现大量复杂的组合逻辑影响检查和测试效率大量复杂的组合逻辑影响检查和测试效率2.有利于进行模块复制,需要复制的电路有利于进行模块复制,需要复制的电路模块可以先封装成底层元件,再在顶层设模块可以先封装成底层元件,再在顶层设计中重复调用计中重复调用第第 6262 页页第三章 原理图输入设计方法1分层设计的要点分层设计
15、的要点1.在底层文件设计完成后执行在底层文件设计完成后执行File|Create Default Symbol 命令并编译命令并编译2.在顶层文件中,调用底层设计时在顶层文件中,调用底层设计时第第 6363 页页第三章 原理图输入设计方法1分层设计的要点分层设计的要点1.在底层文件设计完成后执行在底层文件设计完成后执行File|Create Default Symbol 命令并编译命令并编译2.在顶层文件中,调用底层设计时在顶层文件中,调用底层设计时3.顶层文件不能与底层文件名字相同顶层文件不能与底层文件名字相同第第 6464 页页第三章 原理图输入设计方法第第 6565 页页第三章 原理图输
16、入设计方法仿真的要求:所有输入情况都要考虑到,即按照真值表设置仿真波形第第 6666 页页第三章 原理图输入设计方法技巧:选中合组的引脚,单击右键,选择Enter Group第第 6767 页页第三章 原理图输入设计方法CiABSCo0000000110010100110110010101011100111111第第 6868 页页第三章 原理图输入设计方法33 数字电子钟设计 3.3.1 60进制计数器设计 1、六进制计数器设计(1)数据选择器设计2选1的数据选择器的输入输出引脚如下:控制线1条定义为s;数据输入线2条定义为d0,d1;数据输出线1条定义为y;其真值表如表3-2所示:表3-2
17、 2选1数据选择器真值表控制线输出线sy0d01d1第第 6969 页页第三章 原理图输入设计方法设计电路图如图3-28所示:图3-28 2选1数据选择器电路图 第第 7070 页页第三章 原理图输入设计方法(2)六进制计数器的真值表 上周期输出控制线输入值输出q2 q1 q0 clk clrnload en d2 d1 d0 q2 q1 q0 0 0 0 0 10a b ca b cq2 q1 q0110 q2 q1 q00 0 0111 0 0 10 0 1111 0 1 0 0 1 0111 0 1 10 1 1111 1 0 01 0 0111 1 0 11 0 1111 0 0 0第
18、第 7171 页页第三章 原理图输入设计方法(3)6进制计数器设计 利用数字电路设计方法可设计出各触发器的D输入端的驱动方程分别为:enqqcoqenqendqqqenqenqqdqqqenqenqd020000121011022012第第 7272 页页第三章 原理图输入设计方法根据以上驱动方程可设计出图3-29所示的电路图。第第 7373 页页第三章 原理图输入设计方法(4)仿真6进制计数器 建立波形仿真文件,设置输入信号,如图3-30所示,可以看出,输出信号符合设计要求。第第 7474 页页第三章 原理图输入设计方法2.六十进制计数器设计(1)六十进制计数器的真值表 控制端十位预置个位预
19、置十位输出个位输出clk clrnldnendb2.0da3.0qb2.0qa3.000010baba110q(不变)111q=q+1(最高数到59)第第 7575 页页第三章 原理图输入设计方法(2)六十进制计数器设计 第第 7676 页页第三章 原理图输入设计方法(3)仿真六十进制计数器 第第 7777 页页第三章 原理图输入设计方法3.3.2 十二进制进制计数器设计 1、十二进制计数器真值表 控制端十位预置个位预置十位输出 个位输出clk clrnldnendbda3.0qbqa3.000010baba110q(不变)111q=q+1第第 7878 页页第三章 原理图输入设计方法2十二进
20、制计数器设计(1)2进制计数器的设计 第第 7979 页页第三章 原理图输入设计方法 运用10进制计数器74160器件与2进制计数器可以完成12进制计数器的设计(2)十二进制计数器设计 第第 8080 页页第三章 原理图输入设计方法3.仿真12进制计数器第第 8181 页页第三章 原理图输入设计方法3.3.3 数字电子钟顶层电路设计 1数字电子钟顶层电路设计 时针十位时针个位分针十位分针个位秒针十位秒针个位数据预置端hbha3.0mb2.0ma3.0sb2.0sa3.0时钟输出端qhbqha3.0qmb2.0qma3.0qsb2.0qsa3.0计数器进制12进制计数器60进制计数器60进制计数
21、器显示数字00-1100-5900-59第第 8282 页页第三章 原理图输入设计方法第第 8383 页页第三章 原理图输入设计方法2仿真数字钟 第第 8484 页页第三章 原理图输入设计方法34 利用LPM兆功能块的电路设计 3.4.1 常用LPM兆功能块 分类宏单元注释门单元函数Lpm_and参数化与门Lpm_bustri参数化三态缓冲器Lpm_clshift参数化组合逻辑移位器Lpm_constant参数化常数产生器Lpm_decode参数化解码器Lpm_inv参数化反向器Lpm_mux参数化多路选择器busmux参数化总线选择器mux多路选择器Lpm_or参数化或门Lpm_xor参数化
22、异或门第第 8585 页页第三章 原理图输入设计方法算术运算函数Lpm_abs参数化绝对值运算Lpm_add_sub参数化加/减法器Lpm_compare参数化比较器Lpm_counter参数化计数器Lpm_mult参数化乘法器存储函数Lpm_ff参数化D触发器Lpm_latch参数化锁存器Lpm_ram_dq输入/输出分开的参数化RAMLpm_ram_io输入/输出复用的参数化RAMLpm_rom参数化ROMLpm_shiftreg参数化移位寄存器用户定制函数Csfifo参数化先进先出队列Csdpram参数化双口RAM第第 8686 页页第三章 原理图输入设计方法3.4.2 基于LPM-CO
23、UNTER的数据分频器设计 data:置入计数器的并行数据输入。clock:上升沿触发计数时钟输入。clk_en:高电平使能所有同步操作输入信号。cnt_en:计数使能控制,但不影响其他控制信号,如sload、sset、sclr等。updown:计数器加减控制输入。cin:最低进位输入aclr:异步清零输入aset:异步置位输入sload:在clk的上升沿同步并行数据加载输入。Q:计数输出。cout:计数进位或借位输出。LPM_WIDTH:计数器位宽。第第 8787 页页第三章 原理图输入设计方法第第 8888 页页第三章 原理图输入设计方法第第 8989 页页第三章 原理图输入设计方法3.4
24、.3 制作一个兆功能模块 第第 9090 页页第三章 原理图输入设计方法第第 9191 页页第三章 原理图输入设计方法第第 9292 页页第三章 原理图输入设计方法第第 9393 页页第三章 原理图输入设计方法35 波形输入设计 3.5.1 创建波形设计新文件并指定工程名称 第第 9494 页页第三章 原理图输入设计方法3.5.2 创建输入、输出和隐埋节点 第第 9595 页页第三章 原理图输入设计方法Node NameDefault ValueI/O TypeNode TypeSecondary InputsspeedxBuriedMachineReset=resetClock=clkGet
25、_ticket0Output PinRegisteredClock=clk第第 9696 页页第三章 原理图输入设计方法3.5.3 编辑隐埋状态机节点波形(1)在菜单栏中选择Option/Grid Size命令,弹出Grid Size对话框,在其中输入“30.0ns”,即把网格尺寸设置为30ns。(2)单击“Speed”节点的“Value”区,选中它的整个波形。(3)在菜单栏中选择Edit/Overwrite/State Name命令,或是直接单击波形编辑器窗口左侧的按钮,这时会弹出Overwrite State Name对话框,如图3-46所示。第第 9797 页页第三章 原理图输入设计方法
26、(4)在State Name文本框中输入“legal”,单击OK按钮,整个波形都被状态名“legal”覆盖。(5)结合波形编辑器窗口左侧的按钮和窗口滚动条使波形300ns540ns之间的区域显示出来。(6)单击波形编辑器窗口左侧的波形编辑按钮,鼠标指针的形状也发生了相应变化。参考波形编辑器窗口内上方的“时间”区域,在“Speed”节点波形的300 ns处按下鼠标,拖动到540ns处松开,这之间的区域被选中,同时(Overwrite state Name)对话框自动弹出。(7)在(state name)文本框中输入“warning”,单击OK按钮确认,300ns-540ns之间的波形区域被状态名
27、“warning”所覆盖。第第 9898 页页第三章 原理图输入设计方法(8)重复步骤(5)-(7),用状态名“ticket”覆盖540ns-660ns之间的波形区域。(9)单击波形编辑器窗口左侧的 按钮,可以查看全部波形区域,如图3-47所示。第第 9999 页页第三章 原理图输入设计方法3.5.4 编辑输入和输出节点波形(1)单击波形编辑器窗口左侧的波形编辑按钮后,用鼠标指针拖动选中“accel_in”节点波形中270ns-330ns之间的区域,松开鼠标左健后这一段区域会自动变成高电平(与初始的低电平相对)。当状态机“speed”处于“legal”状态时遇到“accel_in”的高电平,会
28、转变成“warning”状态,表示第1次超速。(2)重复步骤(1)中的操作,将“accel_in”节点波形中510ns-570ns之间的区域也变成高电平,当状态机“speed”处于“warning”状态时遇到“accel_in”的高电平,会转变成“ticket”状态,表示由于第2次超速而得到罚单 第第 100100 页页第三章 原理图输入设计方法(3)按下ESC 键,或是单击(波形编辑器)窗口左侧的按钮,使鼠标指针恢复选择状态,拖动鼠标选中“accel_in”节点波形国630ns-690ns之间的区域,选择菜单栏中的(Edit)/(overqrite)/(undefined(x))命令,或直接
29、单击(波形编辑器)窗口左侧的按钮,使这一段变成不定状态。(4)“reset”节点波形不用作任何修改,保持为低电平。(5)选中“clk”节点的整个波形,方法可以是单击“clk节点的“Name”、“Type”和“Value”中任何一个区域。选择菜单栏中的Edit/Overwrite/clock命令,或者直接单击波形编辑窗口左侧的按钮,这时将会弹出Overwrite Clock对话框如图3-48所示,在Multiplied By对话框中输入“2”,单击OK按钮确认。第第 101101 页页第三章 原理图输入设计方法(6)编辑输出节点“get_ticket”的波形,使其540ns660ns之间的区域变
30、为高电平,它对应着状态机“Speed”的“ticket”状态,表示得到罚单,至此所有节点波形都已编辑完成,如图3-49所示。第第 102102 页页第三章 原理图输入设计方法3.5.5 查看波形情况(1)在鼠标指针处于选择状态时,点击波形区域的0ns处,或者拖动参考柄,将指针移到波形的起点处。(2)按键盘的“”键,可使参考指针跳至下一个逻辑电平跳变沿处,也可通过选择菜单栏中的Utilities/Find Next Transition命令来实现本步操作。(3)重复移动参考指针到每个跳变沿处,跳变沿的逻辑电平值或状态名将显示在Value区。第第 103103 页页第三章 原理图输入设计方法3.5.6 保存文件并检查错误在菜单栏中选择File/Project/Save&Check命令保存当前文件并检查语法错误,系统会自动启动编译器并给出检查报告。检查通过后关闭编译器,返回文本编辑器窗口。3.5.7 创建默认的功能模块在菜单栏中选择File/Create Default Symbol命令,将当前设计文件创建成同名的一个功能模块