Download presentation
Presentation is loading. Please wait.
1
EDA 第三章 原理图输入设计方法
2
3.1 原理图设计方法 原理图编辑流程 准备:安装max+plusII并进入该环境
3
STEP5: 启动编译 STEP7:功能仿 真和波形分析 STEP10:时序 仿真和延时分析 STEP1:建立工作库文件夹
原理图/VHDL文本代码 STEP3:存盘,注意 VHDL文件取名! STEP6:建立仿真波形文件 STEP5: 启动编译 STEP4:将设计项 目设置成Project STEP7:功能仿 真和波形分析 STEP9:引脚 锁定并编译 STEP8: 选择目标器件 STEP12: 硬件测试 STEP10:时序 仿真和延时分析 STEP11:编程 下载/配置
4
1.建立一个新的原理图文件 File > New 选择Graphic Editor file (gdf 格式文件)
5
2.输入元件 Max+plusII的内建函数 基本元件库——prim,常用基本元件库,如AND、OR、VCC、GND、INPUT、OUTPUT 中规模器件库——mf,数字电路中一些中规模器件库,如74系列逻辑器件。 较大规模器件库——mega_lpm,一些比较大的并可做参数设置的元件,使用中需要对其参数进行设置,称为参数可设置兆功能库.
6
调出符号 双击空白处 单击右键->enter symbol
7
可以直接输入符号名,如input,and2,7474等
符号库,第一行是用户的工作库(Work Library)路径。点击任一个库的路径,都会在Symbol Files下显示所有的符号文件名。 最后点击“ok”
8
元件的编辑 移动 旋转 右键菜单 Edit菜单 删除 复制 简单的方法,“ctrl+移动”
9
连线 简单的方法: 将两个元件的引脚处对齐,拖动一个元件,自动形成连线 用鼠标画 两个引脚的连线不能重叠 连线不能进入元件的虚线框内部
按下橡皮筋按钮
10
引脚的命名 双击引脚名 注意 第一个字符必须为英文,以后可用下划线、数字等组合 下划线前后要有字母或数字 “/”“-”“%”都是非法的
大小写的意义一样
11
总线 先画一条线->单击右键-> Line style->粗线 引脚名或总线名的规则为****[m..n]或者[n..m],其中m>n≥0,最多可以代表256个引脚名。一般采用[n-1..0]。
12
选中一条细线,当有小■闪烁时,表示可以进行命名
节点 引脚间的连线(细线)可以称为节点,节点是可以命名的,命名规则与引脚相同。 如果不想连线太多,可以对本质上相连的节点取一致的名称 选中一条细线,当有小■闪烁时,表示可以进行命名
13
3.保存文件 注意最上面的标题栏: 有可能不是 Untitled1 这里是指示环境的当前设计项目 注意此时的文件名 “Untitled1”
15
注意 为了方便同一个项目下的文件查找方便,最好事先特别建立一个目录为该项目的专用目录,目录下存放所有相关的文件
文件的路径不能包含汉字,不能用空格 保存的文件名不要和库文件名相同,如and2、7402等等
16
4.将当前设计设置为工程文件 将当前设计设置为工程文件 新建一个Project
17
5.编译Compile 按下 若有错误->双击Message栏中的红字
19
注意:此时菜单栏中出现了Processing选项
正确 注意:此时菜单栏中出现了Processing选项 编译器网表cnf 适配 rpt 装配 逻辑综合 数据库建库 时序仿真网表文件snf 逻辑分割
20
时序仿真与功能仿真
21
编译器网表cnf 功能仿真网表文件snf 数据库建库
22
6.建立仿真文件 创建仿真波形文件
23
注意,波形文件(scf)的名称一定要与对应的原理图文件的名称(gdf)相同
25
1 3 2 4
27
对单个输入端子设置波形 波形为低电平 波形为高电平 波形为不确定态 波形为高阻态 波形反相 为波形赋时钟值 为波形赋计数器值
28
对成组输入端子设置波形 为群组信号赋值 怎样合组?
29
7.启动仿真 按下仿真按钮
30
设置仿真栅格单位的意义 仿真栅格单位Grid Size: 规定每个栅格的最小时间单位 ,时间值显示在每个栅格竖线的上方。 仿真栅格单位是设置时钟周期的最小单位,即时钟周期最小等于栅格单位,最大等于栅格单位的倍数。P46(思考题:如何设置Grid Size?时钟信号周期如何设置?)
31
Grid Size Options-> Grid size 输入网格值,默认100ns
32
设置仿真终止时间的意义 仿真终止时间End Time:规定何时终止施加输入向量。系统默认为1us,对简单逻辑电路足够了,但复杂电路需要仿真的时间远远超过1us,要人工重新设置。 (如何设置End Time?)
33
End Time File-> End Time 输入仿真截止时间,默认1us
34
设置观察时间范围的意义 观察时间范围Time Range:规定仿真波形的可观察范围,要求Time Range<= End Time。(如何设置Time Range ?)
35
Time Range View-> Time Range 输入可见的时间范围
36
8.选择器件
37
再次编译!
38
9.引线端子适配 按下
41
分配引脚 方法一:鼠标拖动
42
方法二:锁定方法 Assign->Pin/Location/Chip
44
注意 分配引线端子后一定要重新编译 同理,对原理图做任何修改后,也一定要重新编译
46
10.时序仿真和延时分析
47
11.器件编程(下载)
48
12.器件测试 GW48系列实验开发系统
49
创建自己的元件 首先先检查自己的元件有无错误 Save & Check
50
半加器 全加器 3.2 1位全加器设计 1位加法器的功能:实现两个1位二进制数相加 只考虑本位两个一位二进制数A和B相加,而不考虑低位进位
位全加器设计 1位加法器的功能:实现两个1位二进制数相加 半加器 全加器 只考虑本位两个一位二进制数A和B相加,而不考虑低位进位 既有本位两个一位二进制数A和B相加,又有低位进位Ci
51
1位半加器的真值表 表中的A和B分别表示两个相加的一位二进制数,S是本位和,Co是进位位。 A B S Co 1
52
S=AB+AB=A+B Co=AB
53
全加:将本位两个1位二进制数和来自低位的进位位相加
1位全加器的定义 全加:将本位两个1位二进制数和来自低位的进位位相加 令A和B分别为两个相加的1位二进制数,Ci是来自低位的进位位;S是本位和;Co是进位位。
54
全加器的真值表 Ci A B S Co 1
55
S的卡诺图
57
Co的卡诺图
59
原理图底层电路设计 原理图由若干个元件组合而成,当有些元件是多个简单元件的组合电路时,为了精确仿真组合元件的特性,必须单独设计组合元件的原理图设计,这种设计称为底层电路设计。
60
原理图顶层电路设计 当所有的底层元件多设计完毕并生成包装好的单一元件后,再设计一个总原理图,把所有的底层元件调出来,进行导线连接、仿真、编程下载,这种设计称为顶层电路设计。
61
分层设计的好处 增强设计的可读性,避免在设计中出现大量复杂的组合逻辑影响检查和测试效率
有利于进行模块复制,需要复制的电路模块可以先封装成底层元件,再在顶层设计中重复调用
62
分层设计的要点 在底层文件设计完成后执行File|Create Default Symbol 命令并编译 在顶层文件中,调用底层设计时
63
分层设计的要点 在底层文件设计完成后执行File|Create Default Symbol 命令并编译 在顶层文件中,调用底层设计时
顶层文件不能与底层文件名字相同
65
仿真的要求:所有输入情况都要考虑到,即按照真值表设置仿真波形
66
技巧:选中合组的引脚,单击右键,选择Enter Group
67
Ci A B S Co 1
68
3.3 数字电子钟设计 3.3.1 60进制计数器设计 1、六进制计数器设计 (1)数据选择器设计
进制计数器设计 1、六进制计数器设计 (1)数据选择器设计 2选1的数据选择器的输入输出引脚如下:控制线1条定义为s;数据输入线2条定义为d0,d1;数据输出线1条定义为y;其真值表如表3-2所示: 表3-2 2选1数据选择器真值表 控制线 输出线 s y d0 1 d1
69
设计电路图如图3-28所示: 图 选1数据选择器电路图
70
(2)六进制计数器的真值表 上周期输出 控制线 输入值 输出 q2 q1 q0 clk clrn load en d2 d1 d0
ⅹ ⅹ ⅹ ⅹ ↑ 1 a b c
71
(3)6进制计数器设计 利用数字电路设计方法可设计出各触发器的D输入端的驱动方程分别为:
72
根据以上驱动方程可设计出图3-29所示的电路图。
73
(4)仿真6进制计数器 建立波形仿真文件,设置输入信号,如图3-30所示,可以看出,输出信号符合设计要求。
74
2. 六十进制计数器设计 (1)六十进制计数器的真值表 控制端 十位预置 个位预置 十位输出 个位输出 clk clrn ldn en
db[2..0] da[3..0] qb[2..0] qa[3..0] ⅹ ↑ 1 b a q(不变) q=q+1(最高数到59)
75
(2)六十进制计数器设计
76
(3)仿真六十进制计数器
77
3.3.2 十二进制进制计数器设计 1、十二进制计数器真值表 控制端 十位预置 个位预置 十位输出 个位输出 clk clrn ldn en
十二进制进制计数器设计 1、十二进制计数器真值表 控制端 十位预置 个位预置 十位输出 个位输出 clk clrn ldn en db da[3..0] qb qa[3..0] ⅹ ↑ 1 b a q(不变) q=q+1
78
2.十二进制计数器设计 (1)2进制计数器的设计
79
(2)十二进制计数器设计 运用10进制计数器74160器件与2进制计数器可以完成12进制计数器的设计
80
3. 仿真12进制计数器
81
3.3.3 数字电子钟顶层电路设计 1.数字电子钟顶层电路设计 时针十位 时针个位 分针十位 分针个位 秒针十位 秒针个位 数据预置端 hb
数字电子钟顶层电路设计 1.数字电子钟顶层电路设计 时针十位 时针个位 分针十位 分针个位 秒针十位 秒针个位 数据预置端 hb ha[3..0] mb[2..0] ma[3..0] sb[2..0] sa[3..0] 时钟输出端 qhb qha[3..0] qmb[2..0] qma[3..0] qsb[2..0] qsa[3..0] 计数器进制 12进制计数器 60进制计数器 显示数字 00--11 00--59
83
2.仿真数字钟
84
3.4 利用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 参数化异或门
85
算 术 运 函 数 Lpm_abs 参数化绝对值运算 Lpm_add_sub 参数化加/减法器 Lpm_compare 参数化比较器 Lpm_counter 参数化计数器 Lpm_mult 参数化乘法器 存 储 Lpm_ff 参数化D触发器 Lpm_latch 参数化锁存器 Lpm_ram_dq 输入/输出分开的参数化RAM Lpm_ram_io 输入/输出复用的参数化RAM Lpm_rom 参数化ROM Lpm_shiftreg 参数化移位寄存器 用户 定制 函数 Csfifo 参数化先进先出队列 Csdpram 参数化双口RAM
86
3.4.2 基于LPM-COUNTER的数据分频器设计
data[]:置入计数器的并行数据输入。 clock:上升沿触发计数时钟输入。 clk_en:高电平使能所有同步操作输入信号。 cnt_en:计数使能控制,但不影响其他控制信号,如sload、sset、sclr等。 updown:计数器加减控制输入。 cin:最低进位输入 aclr:异步清零输入 aset:异步置位输入 sload:在clk的上升沿同步并行数据加载输入。 Q[]:计数输出。 cout:计数进位或借位输出。 LPM_WIDTH:计数器位宽。
89
制作一个兆功能模块
93
3.5 波形输入设计 3.5.1 创建波形设计新文件并指定工程名称
94
3.5.2 创建输入、输出和隐埋节点
95
Node Name Default Value I/O Type Node Type Secondary Inputs speed x Buried Machine Reset=reset Clock=clk Get_ticket Output Pin Registered
96
编辑隐埋状态机节点波形 (1)在菜单栏中选择Option/Grid Size命令,弹出Grid Size对话框,在其中输入“30.0ns”,即把网格尺寸设置为30ns。 (2)单击“Speed”节点的“Value”区,选中它的整个波形。 (3)在菜单栏中选择Edit/Overwrite/State Name命令,或是直接单击波形编辑器窗口左侧的按钮,这时会弹出Overwrite State Name对话框,如图3-46所示。
97
(4)在State Name文本框中输入“legal”,单击OK按钮,整个波形都被状态名“legal”覆盖。
(5)结合波形编辑器窗口左侧的按钮和窗口滚动条使波形300ns~540ns之间的区域显示出来。 (6)单击波形编辑器窗口左侧的波形编辑按钮,鼠标指针的形状也发生了相应变化。参考波形编辑器窗口内上方的“时间”区域,在“Speed”节点波形的300 ns处按下鼠标,拖动到540ns处松开,这之间的区域被选中,同时(Overwrite state Name)对话框自动弹出。 (7)在(state name)文本框中输入“warning ”,单击OK按钮确认,300ns-540ns之间的波形区域被状态名“warning”所覆盖。
98
全部波形区域,如图3-47所示。 (8)重复步骤(5)-(7),用状态名“ticket”覆盖540ns-660ns之间的波形区域。
(9)单击波形编辑器窗口左侧的 按钮,可以查看 全部波形区域,如图3-47所示。
99
3.5.4 编辑输入和输出节点波形 (1) 单击波形编辑器窗口左侧的波形编辑按钮后,用鼠标指针拖动选中“accel_in ”节点波形中270ns-330ns之间的区域,松开鼠标左健后这一段区域会自动变成高电平(与初始的低电平相对)。当状态机“speed”处于“legal ”状态时遇到“accel_in”的高电平,会转变成“warning ”状态,表示第1次超速。 (2) 重复步骤(1)中的操作,将“accel_in”节点波形中510ns-570ns之间的区域也变成高电平,当状态机“speed ”处于“warning” 状态时遇到“accel_in”的高电平,会转变成“ticket”状态,表示由于第2次超速而得到罚单
100
(3) 按下ESC 键,或是单击(波形编辑器)窗口左侧的按钮,使鼠标指针恢复选择状态,拖动鼠标选中“accel_in”节点波形国630ns-690ns之间的区域,选择菜单栏中的(Edit)/( overqrite)/(undefined(x))命令,或直接单击(波形编辑器)窗口左侧的按钮,使这一段变成不定状态。 (4)“reset”节点波形不用作任何修改,保持为低电平。 (5) 选中“clk”节点的整个波形,方法可以是单击“clk节点的“Name”、“Type”和“Value”中任何一个区域。选择菜单栏中的Edit/Overwrite/clock命令,或者直接单击波形编辑窗口左侧的按钮,这时将会弹出Overwrite Clock对话框如图3-48所示,在Multiplied By对话框中输入“2”,单击OK按钮确认。
101
(6) 编辑输出节点“get_ticket”的波形,使其540ns~660ns之间的区域变为高电平,它对应着状态机“Speed”的“ticket”状态,表示得到罚单,至此所有节点波形都已编辑完成,如图3-49所示。
102
(1) 在鼠标指针处于选择状态时,点击波形区域的0ns处,或者拖动参考柄,将指针移到波形的起点处。
3.5.5 查看波形情况 (1) 在鼠标指针处于选择状态时,点击波形区域的0ns处,或者拖动参考柄,将指针移到波形的起点处。 (2)按键盘的“ ”键,可使参考指针跳至下一个逻辑电平跳变沿处,也可通过选择菜单栏中的Utilities/Find Next Transition命令来实现本步操作。 (3) 重复移动参考指针到每个跳变沿处,跳变沿的逻辑电平值或状态名将显示在Value区。
103
3.5.6 保存文件并检查错误 在菜单栏中选择File/Project/Save & Check命令保存当前文件并检查语法错误,系统会自动启动编译器并给出检查报告。检查通过后关闭编译器,返回文本编辑器窗口。 3.5.7 创建默认的功能模块 在菜单栏中选择File/Create Default Symbol命令,将当前设计文件创建成同名的一个功能模块
Similar presentations