EDA期末复习资料
EDA复习材料
第一章
一、相关英文
单片电子系统SoC System on a Chip
EDA: 电子设计自动化
PLD 可编程逻辑器件
CPLD 复杂可编程逻辑器件
FPGA 现场可编程门陈列
HDL 硬件描述语言
ASIC 特定用途集成电路
SOPC 可编程的片上系统
二、手工设计方法的缺点是;
A、复杂电路的设计、调试十分困难
B、由于无法进行硬件系统仿真,如果某一过程存在过错,查找和修改十分不便
C、设计过程中产生大量文档,不易管理
D、对于IC设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差
E、只有在设计出样机或生产出芯片后才能进行实测
相比的eda技术有很大不同:
(1)用HDL对数字系统进行抽象的行为与功能描述以及具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低成本,缩短设计周期
(2)EDA工具有各类库的支持
(3)某些HDL也是文档型的语言,极大简化了设计文档的管理
(4)EDA技术中最瞩目的功能是最具现代电子设计技术特征的功能日益强大的逻辑设计仿真测试技术
(5)基于EDA技术的设计的不同,由于用HDL表达的成功的专用功能设计在实现目标方面有很大的可选性,它既可以用不同来源的通用FPGA/CPLD实现,也可以直接以ASIC来实现,设计者拥有完全的自主权,再无受制于人之虞
(6)设计成果是通用性的,IP核具有规范的接口协议。良好的可移植与可测试性,为系统开发提供了可靠的保证
(7)将所有设计环节纳入统一的自顶而下的设计方案
(8)各个设计层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利用计算机对硬件系统进行完整的测试
第二章
一、图形输入:原理图输入、状态图输入和波形图输入
二、VHDL、Verilog
三、(1)时序仿真,就是接近真实器件运行特性的仿真,仿真文件包含器件硬件特性参数,仿真精度高
(2)功能仿真,是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行
测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及任何具体器件的硬性特性
四、IP就是知识产权核或知识产权模块
软IP是用VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能
固IP是完成了综合的功能块
硬IP提供设计的最终阶级产品:淹模。随着设计深度的提高,后续工序所需要做的事情就越少,灵活性也就越小。
第三章
一、可编程的查找表(Look Up Table,LUT)可编程的最小逻辑构成单元
LAB 逻辑阵列块由多个逻辑单元LE
PLL 锁相环
LVDS 低压差分串行RSDS 去抖动差分信号
联合测试行动组(Joint Test Action Group,JTAP)
JTAP BST边界扫描I/O引脚功能:TDI 测试数据输入TDO 测试数据输出TMS 测试模块选择TCK 测试时钟输入TRST 测试复位输入具体看P48页二、PS(被动串行)模式:MSEL1=0 MSEL0=0
PPS(被动并行同步)模式:MSEL1=1 MSEL0=0
PPA(被动并行异步)模式:MSEL1=0 MSEL0=1
PSA(被动串行异步)模式:MSEL1=1 MSEL0=0
JTAG模式; MSEL1=0 MSEL0=0
AS(主动串行)模式
第四章
一、INOUT;定义的通道确定为输入输出双向端口
BUFFER缓冲端口,其功能与INOUT区别在于当需要输入数据时,只允许内部回读输出的信号
逻辑操作符;AND、OR、NOT
二、WHEN-ELSE条件信号赋值语句
赋值目标<= 表达式WHEN 赋值条件ELSE
表达式WHEN 赋值条件ELSE
```
表达式;
三、上升沿检测条件判断三个表达式:
(1)CLK`EVENT AND CLK=’1’;
(2)CLK`EVENT AND (CLK=’1’) AND (CLK`LAST-V ALUE=’0’)
(3)
四、STD-LOGIC所定义的九种含义;’U’表示未初始化;’X’表示强未知;’0’表示强逻辑0;’1’表示强逻辑1;’Z’表示高阻态;’W’表示弱未知;’L’表示弱逻辑0;’H’表示弱逻辑1;’-‘表示忽略;
数据对象:信号(SIGNAL)变量(V ARIABLE)常量(CONSTANT)
五、并置操作符&
abc<=a&b的作用是令:abc(1)<=a;abc(0)<=b;
第六章
(1)IF 条件句Then
顺序语句
END IF;
(2)IF 条件句Then
顺序语句
ELSE
顺序语句
END IF;
(3)IF 条件句Then
IF 条件句Then
、、、、
END IF
END IF;
(4)IF 条件句Then
顺序语句
ELSEIF 条件句Then
顺序语句
、、、、
ELSE
顺序语句
END IF;
第七章
一、建立.mif格式文件
选择ROM数据文件编辑窗口,在File菜单中选择New,并在New窗口中Other files页,在选择Memory Initilization File项,单击OK按钮后产生ROM数据文件大小选择窗口。然后根据数据位数。
建立.hex格式文件
在New窗口中选择Other files项后,选择Hexadecimal File项。具体看P163 第八章
一、状态机的优点:
(1)状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点
(2)由于状态机的构建相对简单,设计方案相对固定,性能良好的综合器都具备许多可控或自动的优化状态机的功能
(3)状态机容易构成性能良好的同步时序逻辑模块
(4)状态机VHDL表述丰富多样,程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有独到的好处
(5)在高速运算和控制方面,状态机更有其巨大的优势
二、状态位直接输出型编码的特点:将状态编码直接输出作为控制信号,即output=state,要求对状态机各状态的编码做特殊的选择,以适应控制时序的要求,这种状态机称为状态码直接输出型状态机.优点:输出速度快,没有毛刺现象.
缺点;程序可读性差,用于状态译码的组合逻辑资源比其他以相同触发器数量构成的状态机多,而且难以有效的控制非法状态的出现
顺序编码:最为简单,且使用的触发器数量最少,剩余的非法状态最少,容错技术最为简单。缺点:尽管节省了触发器,却增加了从一种状态向另一种状态转换的译码组合逻辑,这对于在触发器资源丰富相对较少的FPGA器件中实现是不利的。
一位热码编码:一位热码编码方式尽管用了较多的触发器,但其简单的编码方式大为简化了状态译码逻辑,提高了状态转换速度,这对于含有较多的时序逻辑资源的FPGA器件是较好的解决方案。
第九章
一、VHDL包含许多特有的文件规则和表达方式(具体参考P247)
数字:1、整数:整数都是十进制的数
2、实数;实数也都是十进制的数,但必须带加小数点
3、以数制基数表示的文字:a、用十进制标明数制进位的基数b、数制隔离符号“#”c、表达数d、指数隔离符号“#”e、用十进制表示的指数部分,这一部分的数如果为0可以省去不写
字符串;1、文字字符串是用双引号括起的一串文字
2、数位字符串也称位矢量,是预定义的数据类型BIT一组数组。第十章
祥看VHDL基本语句的语法。
第十一章
一、资源共享的定义:资源优化是一种一般化的方法,主要针对数据通路中
耗费逻辑资源比较多的模块,通过选择、复用的方式共享使用该模块,以减少该模块的使用个数,达到减少资源使用、优化面积的目的。
串行化石指把原来耗用资源巨大、单时钟周期完成的并行执行的逻辑块分割开来,提取出相同的逻辑模块,在时间上复用该逻辑模块,用多个时钟周期完成相同的功能,其代价是工作速度被大为降低。
设计题:
例4-2
ENTITY mux21a IS
PORT ( a, b: IN BIT;
s: IN BIT;
y: OUT BIT );
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
SIGNAL d,e : BIT:
BEGIN
d<= a AND (NOT s);
e<= b AND s;
y<= d OR e;
END ARCHITECTURE one;
十进制加法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN:IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE behav OF CNT10 IS
BEGIN
PROCESS(CLK,RST,EN)
V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST='1'THEN CQI:=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1'THEN
IF EN='1'THEN
IF CQI<9 THEN CQI:=CQI+1;
ELSE CQI:=(OTHERS=>'0');
END IF;
END IF;
END IF;
IF CQI=9 THEN COUT<='1';
ELSE COUT<='0';
END IF;(题目如果不是带进位的,此段不用写)
CQ<=CQI;
END PROCESS;
END behav;
十进制减法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN:IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE behav OF CNT10 IS
BEGIN
PROCESS(CLK,RST,EN)
V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST='1'THEN CQI:=9;
ELSIF CLK'EVENT AND CLK='1'THEN
IF EN='1'THEN
IF CQI>0 THEN CQI:=CQI-1;
ELSE CQI:=9;
END IF;
END IF;
END IF;
IF CQI=0THEN COUT<='1';
ELSE COUT<='0';
END IF; (题目如果不是带进位的,此段不用写)
CQ<=CQI;
END PROCESS;
END behav;
十六进制加法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN:IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE behav OF CNT10 IS
BEGIN
PROCESS(CLK,RST,EN)
V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST='1'THEN CQI:=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1'THEN
IF EN='1'THEN CQI:=CQI+1;
END IF;
END IF;
IF CQI=15 THEN COUT<='1';
ELSE COUT<='0';
END IF;(题目如果不是带进位的,此段不用写)
CQ<=CQI;
END PROCESS;
END behav;
十六进制减法计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT (CLK,RST,EN:IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE behav OF CNT10 IS
BEGIN
PROCESS(CLK,RST,EN)
V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST='1'THEN CQI:=15;
ELSIF CLK'EVENT AND CLK='1'THEN
IF EN='1'THEN CQI:=CQI-1;
END IF;
END IF;
IF CQI=0 THEN COUT<='1';
ELSE COUT<='0';
END IF;(题目如果不是带进位的,此段不用写)
CQ<=CQI;
END PROCESS;
END behav;
8-4 状态机设计
b图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY s_machine1 IS
PORT ( inta : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
CLK,RST : IN STD_LOGIC;
outa: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END s_machine1;
ARCHITECTURE behav OF s_machine1 IS
TYPE ST_TYPE IS (ST0, ST1, ST2, ST3);
SIGNAL C_ST : ST_TYPE ;
BEGIN
PROCESS(CLK,RST)
BEGIN
IF RST ='1' THEN C_ST <= ST0 ; outa<= "0000" ; ELSIF CLK'EVENT AND CLK='1' THEN
CASE C_ST IS
WHEN ST0 => IF inta ="101" THEN outa <= "0010" ; ELSIF inta ="111" THEN outa <= "1100";
ELSE NULL;END IF;
C_ST <= ST1 ;
WHEN ST1 => IF inta ="000" THEN C_ST <= ST1 ; ELSIF inta ="110" THEN C_ST <= ST2 ;
ELSE NULL; END IF;
outa <= "1001" ;
WHEN ST2 => IF inta ="100" THEN C_ST <= ST2 ; ELSIF inta ="011" THEN C_ST <= ST1 ;
ELSE C_ST <= ST3 ; END IF;
outa <= "1111" ;
WHEN ST3 => IF inta ="101" THEN outa <= "1101" ; ELSIF inta ="011" THEN outa <= "1110" ;
ELSE NULL;END IF;
C_ST <= ST0 ;
WHEN OTHERS => C_ST <= ST0;outa<= "0000" ; END CASE;
END IF;
END PROCESS;
END behav;
c图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY s_machine0 IS
PORT ( clk,reset : IN STD_LOGIC;
inta : IN STD_LOGIC_VECTOR (0 TO 2);
outa : OUT STD_LOGIC_VECTOR (0 TO 3));
END s_machine0;
ARCHITECTURE behv OF s_machine0 IS
TYPE FSM_ST IS (s0, s1, s2, s3); --数据类型定义,状态符号化SIGNAL current_state, next_state: FSM_ST;
--将现态和次态定义为新的数据类型
BEGIN
REG: PROCESS (reset,clk) --主控时序进程
BEGIN
IF reset = '1' THEN current_state <= s0;--检测异步复位信号
ELSIF clk='1' AND clk'EVENT THEN
current_state <= next_state;
END IF;
END PROCESS;
COM:PROCESS(current_state,inta) --主控组合进程
BEGIN
CASE current_state IS
WHEN s0 =>
IF inta = "101" THEN outa<="0100";
ELSE outa<="0011";
END IF;
next_state<=s1;
WHEN s1 => outa<="1001";
IF inta = "000" THEN next_state<=s1;
ELSE next_state<=s2;
END IF;
WHEN s2 => outa<="1111";
IF inta = "001" THEN next_state<=s2;
ELSIF inta = "110" THEN next_state<=s1; ELSE next_state<=s3; END IF;
WHEN s3 =>
IF inta = "101" THEN outa<="1011";
ELSE outa<="0111";
END IF;
next_state<=s0;
END CASE;
END PROCESS;
END behv;