1、EDA总复习第一章1、名词解释VHDL: 超高速集成电路硬件描述语言ASIC: 专用集成电路FPGA:现场可编程门阵列CPLD:复杂可编程逻辑器件2、 EDA技术最终实现目标的ASIC的三种途径:(1) 超大规模可编程逻辑器件(2) 半定制或全定制ASIC(3) 混合ASIC3、 VHDL综合的含义和特点含义:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。特点: (1)从自然语言转换到VHDL语言等算法表示,即自然语言综合(2)从算法表示转换到寄存器传输级,即从行为域到结构域的综合,即行为综合(3)RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合;(4
2、)从逻辑门表示转换到版图表示,或转换到FPGA的配置网表文件,可称为结构综合。第二章1、FPGACPLD设计流程的几个步骤: 设计输入综合适配时序仿真与功能仿真编程下载硬件测试2、原理图输入与 VHDL文本输入设计的区别: 答:原理图输入是绘制特定功能的电路原理图“ 告诉我你要设计什么样的系统硬件,我就画给你”VHDL 是用语言多层次描述系统硬件“ 告诉我你的电路行为,那么VHDL 编译器会完成这个电路行为的硬件系统”但是设计师并不能控制电路怎么实现。VHDL 文本输入的优点:易修改不依赖于任何特定硬件环境,可移植性好更灵活3、IP核的含义及分类答:含义:就是知识产权核或知识产权模块的意思分类
3、:软 IP:用硬件描述语言描述的功能块固 IP:完成了综合的功能块硬 IP:提供设计的最终阶段产品:掩模第三章1、名词解释:LUT: Look Up Table (可编程查找表)SARM:静态随机存储器2.FPGA - Field Programmable Gate ArrayCPLD - Complex Programmable Logic Device 3.乘积项可编程结构可编程逻辑器件(PLD)SRAM查找表逻辑方法可编程门阵列(PGA)4.PAL (可编程阵列逻辑)与阵列可编程或阵列不可编程GAL(通用阵列逻辑器件)(General Array Logic Device)第四章 实例:
4、多路选择器设计,触发器设计,异步时序电路设计,全加器设计,计数器设计,移位寄存器设计1、多路选择器设计4选1的多路选择器原理:名称:mux41端口设置: 输入端:a,b,c,d 选择控制输入端:s0,s1 输出端:y实现功能:当s0s100时选择输出ya;否则当s0s1 01时选择输出yb;否则当s0s1 10时选择输出yc;否则选择输出yd。ENTITY mux41 IS PORT ( a,b,c,d,s0,s1: IN BIT; y : OUT BIT );END ENTITY mux41;ARCHITECTURE one OF mux41 IS BEGIN y=a WHEN s0=0an
5、d s1=0 ELSE b WHEN s0=0 and s1=1 ELSE c WHEN s0=1 and s1=0 ELSE d;END ARCHITECTURE one ;2、D触发器设计LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1:STD_LOGIC; -类似于在芯片内部定义一个数据的暂存节点 BE
6、GIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ; -将内部的暂存数据向端口输出 END PROCESS ; END bhv;3、 时序电路设计ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGINPRO1: PROCESS (CLK) BEGIN IF CLKEVENT AND CLK=1 THEN Q1 = NOT (Q2 OR A); END IF; END PROCESS ;PRO2:PROCESS (Q1)
7、 BEGIN IF Q1EVENT AND Q1=1 THEN Q2 = D; END IF; QQ = Q2 ; END PROCESS ; 4、半加器设计a b so co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1【例4-16】LIBRARY IEEE; -半加器描述(1):布尔方程描述法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_a
8、dder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 【例4-17】LIBRARY IEEE; -半加器描述(2):真值表描述法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNT
9、O 0) ;BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS;END ARCHITECTURE fh1 ;【例4-19】 LIBRARY IEEE; -1位二进制全加器顶层设计描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder; ARCHITECTURE fd1 OF f_adder IS
10、 COMPONENT h_adder PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT;SIGNAL d,e,f : STD_LOGIC; BEGIN u1: h_adder PORT MAP(a=ain,b=bin,co=d,so=e); u2: h_adder PORT MAP(a=e,b=cin,co=f,so=sum); u3 : or2a PORT MA
11、P(a=d,b=f, c=cout);END ARCHITECTURE fd1;5、多路选择器设计4选1的多路选择器原理:实现功能:当s0s100时选择输出ya;否则当s0s1 01时选择输出yb;否则当s0s1 10时选择输出yc;否则选择输出yd。ENTITY mux41 IS PORT ( a, b, c, d, s0,s1: IN STD_LOGIC; y : OUT STD_LOGIC );END ENTITY mux41;ARCHITECTURE one OF mux41 IS SIGNAL ss : STD_LOGIC_VECTOR(1 DOWNTO 0) ; BEGIN Pro
12、cess( a, b, c, d, s0,s1 ) ss y y y y NULL ; END CASE; 6、利用QUARTUS库中元器件D触发器(图形符号见图1)和元件例化,完成如下图所示的电路设计。LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY shifter ISPORT( din,clk: IN std_logic; dout: OUT std_logic);END shifter;ARCHITECTURE a OF shifter IS COMPONENT dff PORT (D,clk: IN std_logic; Q: OUT s
13、td_logic); END COMPONENT; SIGNAL d: std_logic _vector (4 DOWNTO 0); BEGIN d(0) d(0), clk= clk, Q = d(1); U1:dff PORT MAP (D= d(1), clk= clk, Q = d(2); U2:dff PORT MAP (D=d(2), clk= clk, Q =d(3); U3:dff PORT MAP (D=d(3), clk= clk, Q =d(4); dout=d(4);END a;6、计数器的设计【例4-21】 LIBRARY IEEE ; USE IEEE.STD_L
14、OGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -运算符重载函数 ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ; ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ; END IF; Q =
15、Q1 ; END PROCESS ; END bhv;【例4-20】ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q : BUFFER INTEGER RANGE 15 DOWNTO 0 ) ; END ; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q 0); -计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数 IF CQI 0);-大于9,计数值清零 E
16、ND IF; END IF; END IF; IF CQI = 1001 THEN COUT = 1; -计数大于9,输出进位信号 ELSE COUT = 0; END IF; CQ = CQI; -将计数值向端口输出 END PROCESS;END behav;练习:1:设计一个带有异步清零和同步使能端的3位增1/减1计数器:当输入信号UP等于1 时计数器增1;当输入信号UP等于0时计数器减1。输出为计数后的值及进位信号。Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity up_dow
17、n is Port(clk,rst,en,up: in std_logic; Sum: out std_logic_vector(2 downto 0); Cout: out std_logic); End;Architecture a of up_down isSignal count: std_logic_vector(2 downto 0); -定义信号Begin Process(clk,rst) -进程,敏感信号 Begin If rst=0 then Count0); -异步清零 Elsif rising_edge(clk) then -如果上升沿 If en=1 then Case
18、 up is When 1 = countcount=count-1; End case; End if; End if; End process; Sum=count; Cout =1 when en=1 and (up=1 and count=7) or (up=0 and count=0) else 0; -进位信号 End;习题:4.7设计含有异步清零和设计使能的16位二进制加减可控计数器Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity up_down is Port(clk,
19、 rst, en, up: in std_logic; Sum: out std_logic_vector(15 downto 0);End;Architecture a of up_down isSignal count: std_logic_vector(15 downto 0); -定义信号Begin Process(clk,rst) -进程,敏感信号 Begin If rst=0 then count0); -异步清零 Elsif rising_edge(clk) then -如果上升沿 If en=1 then Case up is When 1 = countcount=count
20、-1; End case; End if; End if; End process; Sum=count;End;练习:设计一个带有同步并行加载功能的8位右移移位寄存器,其移空位用输入端sda的值来填补。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shifter IS PORT(clk,sda,load: IN STD_LOGIC; Din: in std_logic_vector(7 downto 0); QB: OUT std_logic_vector(7 downto 0);END shifter;ARCHITECTURE behave
21、 OF shifter IS SIGNAL reg: std_logic_vector(7 downto 0);BEGIN PROCESS (clk, load) BEGINif clkevent and clk = 1 then if loda = 1 then reg = din; else reg = sda & Din(7 downto 1); end if; end if; end process; QB = reg;End behav;习题4.4如上图是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件练习:设计一个JK触发器LIBRARY IEEE;USE I
22、EEE.STD_LOGIC_1164.ALL;ENTITY JKff_v1 IS PORT(J,K: IN STD_LOGIC; clk: IN STD_LOGIC; set: IN STD_LOGIC; reset: IN STD_LOGIC; Q,QB: OUT STD_LOGIC);END JKff_v1;ARCHITECTURE behave OF JKff_v1 IS SIGNAL Q_temp,QB_temp: STD_LOGIC;BEGIN PROCESS (clk,set,reset) BEGIN IF (set =0 AND reset =1) THEN Q_temp = 1
23、; QB_temp = 0; ELSIF (set =1 AND reset =0) THEN Q_temp = 0; QB_temp = 1; ELSIF (clk EVENT AND clk = 1) THEN IF(J=0 AND K=1)THEN Q_temp = 0; QB_temp = 1; ELSIF(J=1 AND K=0) THEN Q_temp = 1; QB_temp = 0; ELSIF(J=1AND K=1) THEN Q_temp = NOT Q_temp ; QB_temp = NOT QB_temp; END IF; END IF; Q = Q_temp; QB
24、 = QB_temp; END PROCESS;END behave;第六章1、信号与变量的异同相同点:从硬件电路系统来看,变量和信号相当于逻辑电路系统中的连线和连线上的信号值,常量相当于独立中的恒定电平,如GND或者VCC。区别:接受与保持信号的方式和信息保持与传递的区域大小上。例如 信号可以设置传输延迟量,而变量不能; 2、进程中的信号与变量赋值语句【例6-1】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END
25、 ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE QQ : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK = 1 THEN QQ := D1 ; END IF; Q1 = QQ; END PROCESS ; END ;【例6-2】 . . . ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK =1 THEN QQ = D1 ; END IF; Q1 =
26、 QQ; END PROCESS ; END ;例68带进位循环左移( 8位移位寄存器)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFT IS PORT (CLK,CO : IN STD_LOGIC; - 时钟和进位输入 MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); - 移位模式控制字 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); - 待加载移位的数据 QB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -移位数据输出 CN : OUT STA_LOGIC); -进位输出END ENTITY;ARCHITECTURE behav OF SHIFT IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC; BEGIN PROCESS (CLK,MD,CO) BEGI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1