第一篇:EDA期末总结7
1章 PORT DOWNTO 0);(D:INSTD_LOGIC_VECTOR(11DOWNTO 0);
Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0));
1、常用的硬件描述语言有VHDL、Verilog、ABEL
CLK ,STATUS : IN STD_LOGIC;END AD574A;
2、VHDL自顶向下的设计流程:
LOCK0 : OUT STD_LOGIC;ARCHITECTURE behav OF AD574A IS 1.设计说明书2.建立VHDL行为模型3.VHDL行为仿真4.VHDL-RTL
CS,A0,RC,K12X8 : OUT STD_LOGIC;SIGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0);级建模 Q:OUTSTD_LOGIC_VECTOR(11DOWNTO 0));
CONSTANT st0 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “11100”;5.前端功能仿真6.逻辑综合7.测试向量生成8.功能仿真9.结END AD574;
CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00001”;构综合10.门级时序仿真11.硬件测试12.设计完成 ARCHITECTURE behav OF AD574 IS
CONSTANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00000”;2章 TYPE states IS(st0, st1, st2, st3,st4);
CONSTANT st3 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00100”;SIGNALcurrent_state,next_state:states :=st0;
CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00110”;1.一般ASIC设计的流程: SIGNAL REGL:STD_LOGIC_VECTOR(11DOWNTO 0);
SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0);系统规格说明:系统划分:逻辑设计与综合:综合后仿真:版图设SIGNAL LOCK : STD_LOGIC;
SIGNAL LK
: STD_LOGIC;计:版图验证:参数提取与后仿真:制版、流片:芯片测试 BEGIN BEGIN
2、常用EDA工具:
K12X8 <= '1';
LOCK0 <= LOCK;
COM1: PROCESS(current_state,STATUS)设计输入编辑器:HDL综合器:仿真器:适配器(或布局布线器):COM1: PROCESS(current_state,STATUS)
BEGIN 下载器 BEGIN
CASE current_state IS
3、IP核:软IP硬IP固IP
CASE current_state IS
WHEN st0 => next_state <= st1;3章
WHEN st0 => next_state <= st1;
WHEN st1 => next_state <= st2;
WHEN st1 => next_state <= st2;
WHEN st2 => IF(STATUS='1')THEN next_state <= st2;
1、CPLD和FPGA的主要区别:
WHEN st2 =>IF(STATUS='1')THENnext state <= st2;
ELSE next_state <= st3;
结构上的不同:集成度的不同:CPLD:500~50000门;FPGA:1K~
ELSE next_state <= st3;
END IF;10M门:应用范围不同:CPLD逻辑能力强而寄存器少(1K左右),END IF;
WHEN st3=> next_state <= st4;
适用于控制密集型系统;FPGA逻辑能力较弱但寄存器多(100多K),WHEN st3 => next_state <= st4;
WHEN st4=> next_state <= st0;适用于数据密集型系统。
WHEN st4 => next_state <= st0;
WHEN OTHERS => next_state <= st0;
使用方法不同
2、FPGA和CPLD的选用(1)CPLD的选用: 逻辑密集型:中小规模(1000~50000):免费软件支持;编程数据不丢失,电路简单;ISP特性,编程加密;布线延迟固定,时序特性稳定;(2)FPGA选用: 数据密集型;大规模设计(5000~数百万门);SOC设计:ASIC的设计仿真:布线灵活,但时序特性不稳定;需用专用的ROM进行数据配置 4章
1、EDA综合工具提供的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整数型(Interger)。
2、VHDL语言描述结构体功能有3种方法:行为描述法:数据流描述法;结构描述法
3、VHDL的库:STD库和WORK库:IEEE库
4、clock’EVENT and clock=‘1检测上升沿;clock’EVENT and clock=‘0’检测下降沿。
5、简述实体、端口概念,端口种类及INPUT与BUFFER的异同。以关键词ENTITY引导,END ENTITY....结束的语句部分成为实体。端口种类4种:IN、OUT、INOUT、BUFFER。INOUT定义的通道确定为输入输出双向端口;、BUFFER在需要输入数据是时,只允许内不回读输出的信号。
6、结构体 以关键词ARCHITECTURE引导,END 结束的语句部分成为结构体。
7、端口: INOUT定义的通道为输入输出双向端口,可以由外向内或由内向外传输数据,而BUFFER定义的通道虽然也是输入输出端口,但它回读的信号不能从外部输入,而是由内部产生,向外输出的信号。IN定义的通道为单向只读模式,规定数据只能通过此端口被读入实体中 OUT定义的通道为单向输出模式,规定数据只能通过此端口从实体向外流出,或者说可以将实体中的数据向此端口赋值。INOUT定义的通道确定为输入输出双向端口,可以由外向内或由内向外传输数据。6章
1、说明用原理图输入方法设计电路的详细流程 1.为一项工程设计建立文件夹 2.输入设计项目和存盘 3.将设计项目设置成工程文件 4.选择目标器件并编译 5时序仿真和包装入库 6.设计顶层文件 7章
1、为什么要使用状态机 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。状态机的结构模式相对简单。状态机容易构成性能良好的同步时序逻辑模块。状态机的VHDL表述丰富多样。在高速运算和控制方面,状态机更有其巨大的优势。就可靠性而言,状态机的优势也是十分明显的。
2、时序进程将次态信号送到现态信号
3、Moore型输出仅与当前状态有关,Mealy型输出是当前状态与所有输入信号 FSM:s_machine current_state clkPROCESSPROCESSREGCOMcomb_outputsreset next_statestate_inputs LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS
PORT(clk,reset
: IN STD_LOGIC;
state_inputs : IN STD_LOGIC_VECTOR(0 TO 1);
comb_outputs : OUT INTEGER RANGE 0 TO 15);END s_machine;ARCHITECTURE behv OF s_machine 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, state_Inputs)BEGIN
CASE current_state IS
WHEN s0 => comb_outputs<= 5;
IF state_inputs = “00” THEN next_state<=s0;
ELSE next_state<=s1;
END IF;
WHEN s1 => comb_outputs<= 8;
IF state_inputs = “00” THEN next_state<=s1;
ELSE next_state<=s2;
END IF;
WHEN s2 =>
comb_outputs<= 12;
IF state_inputs = “11” THEN next_state <= s0;
ELSE next_state <= s3;
END IF;
WHEN s3 => comb_outputs <= 14;
IF state_inputs = “11” THEN next_state <= s3;
ELSE next_state <= s0;
END IF;
END case;
END PROCESS;
END behv;三进程有限状态机 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY AD574 IS
WHEN OTHERS => next_state <= st0;
END CASE;END PROCESS COM1;COM2: PROCESS(current_state)BEGIN
CASE current_state IS
WHEN st0=>CS<='1';A0<='1';RC<='1';LOCK<='0';WHEN st1=>CS<='0';A0<='0';RC<='0';LOCK<='0';
WHEN st2=>CS<='0';A0<='0';RC<='0';LOCK<='0';WHEN st3=>CS<='0';A0<='0';RC<='1';LOCK<='0';
WHEN st4=>CS<='0';A0<='0';RC<='1';LOCK<='1';
WHEN OTHERS=>CS<='1';A0<='1';RC<='1';LOCK<='0';
END CASE;END PROCESS COM2;REG: PROCESS(CLK)
BEGIN IF(CLK'EVENT AND CLK='1')THEN current_state <= next_state;END IF;END PROCESS REG;LATCH1 : PROCESS(LOCK)BEGIN IF LOCK='1' AND LOCK'EVENT THEN REGL <= D;END IF;END PROCESS;
Q <= REGL;
END behav;单进程Moore型有限状态机 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 IS PORT(DATAIN:INSTD_LOGIC_VECTOR(1 DOWNTO 0);
CLK,RST : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END MOORE1;ARCHITECTURE behav OF MOORE1 IS
TYPE ST_TYPE IS(ST0, ST1, ST2, ST3,ST4);
SIGNAL C_ST : ST_TYPE;
BEGIN
PROCESS(CLK,RST)
BEGIN
IF RST ='1' THEN C_ST <= ST0;Q<= “0000”;
ELSIF CLK'EVENT AND CLK='1' THEN
CASE C_ST IS
WHEN ST0 => IF DATAIN =“10” THEN C_ST <= ST1;
ELSE C_ST <= ST0;END IF;
Q <= “1001”;WHEN ST1 => IF DATAIN =“11” THEN C_ST <= ST2;
ELSE C_ST <= ST1;END IF;
Q <= “0101”;WHEN ST2 => IF DATAIN =“01” THEN C_ST <= ST3;
ELSE C_ST <= ST0;END IF;
Q <= “1100”;WHEN ST3 => IF DATAIN =“00” THEN C_ST <= ST4;
ELSE C_ST <= ST2;END IF;
Q <= “0010”;WHEN ST4 => IF DATAIN =“11” THEN C_ST <= ST0;
ELSE C_ST <= ST3;END IF;
Q <= “1001”;WHEN OTHERS => C_ST <= ST0;
END CASE;
END IF;
END PROCESS;END behav;2进程Mealy型有限状态机的设计
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 IS PORT(CLK,DATAIN,RESET:IN STD_LOGIC;
Q:OUTSTD_LOGIC_VECTOR(4DOWNTO 0));END MEALY1;ARCHITECTURE behav OF MEALY1 IS
TYPE states IS(st0, st1, st2, st3,st4);
SIGNAL STX : states;
BEGIN
COMREG : PROCESS(CLK,RESET)BEGIN
IF RESET ='1' THEN STX <= ST0;
ELSIF CLK'EVENT AND CLK = '1' THEN CASE STX IS
WHEN st0 => IF DATAIN = '1' THEN STX <= st1;END IF;
WHEN st1 => IF DATAIN = '0' THEN STX <= st2;END IF;
WHEN st2 => IF DATAIN = '1' THEN STX <= st3;END IF;
WHEN st3 => IF DATAIN = '0' THEN STX <= st4;END IF;
WHEN st4 => IF DATAIN = '1' THEN STX <= st0;END IF;
WHEN OTHERS => STX <= st0;
END CASE;
END IF;END PROCESS COMREG;COM1: PROCESS(STX,DATAIN)BEGIN
CASE STX IS
WHEN st0 => IF DATAIN = '1' THEN Q <= “10000”;
ELSE Q<=“01010”;END IF;
WHEN st1 => IF DATAIN = '0' THEN Q <= “10111”;
ELSE Q<=“10100”;END IF;
WHEN st2 => IF DATAIN = '1' THEN Q <= “10101”;
ELSE Q<=“10011”;END IF;
WHEN st3 => IF DATAIN = '0' THEN Q <= “11011”;
ELSE Q<=“01001”;END IF;
WHEN st4 => IF DATAIN = '1' THEN Q <= “11101”;
ELSE Q<=“01101”;END IF;
WHEN OTHERS => Q<=“00000”;
END CASE;END PROCESS COM1;END behav;状态编码
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD574A IS
PORT(D : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
CLK ,STATUS : IN STD_LOGIC;
OUT4 : OUT STD_LOGIC_VECTOR(3
END CASE;
OUT4 <= current_state(4 DOWNTO 1);END PROCESS COM1;
REG: PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK='1')THEN current_state <= next_state;
END IF;
END PROCESS REG;
LK <= current_state(1);
LATCH1 : PROCESS(LK)
BEGIN
IF LK='1' AND LK'EVENT THEN
REGL <= D;
END IF;
END PROCESS;
Q <= REGL;
END behav;
9章
1、VHDL有那几种基本的顺序语句? 赋值语句;流程控制语句;等待语句;子程序调用语句;返回语句;空操作语句。
2、什么叫顺序语句,它的适用范围是什么?
执行顺序与它们的书写顺序基本一致的语句叫顺序语句,顺序语句只能出现在进程和子程序中,子程序包括函数和过程。3、VHDL并行语句几种? 并行信号赋值语句;进程语句;块语句;条件信号赋值语句;元件例化语句;生成语句;并行过程调用语句。
4、什么叫并行语句? 在结构体的执行是同步进行的,或者说是并行运行的,其执行方式与书写的顺序无关。
5、VHDL中具有属性的项目: 类型、子类型、过程、函数、信号、变量、常量、实体、结构体、配置、程序包、元件和语句标号等。
6、综合器支持的属性有: LEFT、RIGHT、HIGH、LOW、RANGE、REVERS RANGE、LENGTH、EVENT及STABLE。
端口模式:IN单向只读
OUT单向输出
INOUT输入输出双向
BUFFER内部回读输出信号,反馈 数据类型:INTEGER整数数据
BOOLEAN布尔数据
STD_LOGIC标准逻辑位数据
BIT位数据 逻辑操作符:AND与
OR或
NAND与非
NOR或非
XOR异或
XNOR同或
NOT非 数据对象:SIGNAL信号
VARIABLE变量
CONSTANT常量
7、for_loop语句实现一个16位的串行并出移位寄存器
Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_unsigned.all;Use IEEE.std_logic_arith.all;Entity chuan_bing is port(load : in std_logic;
d_in : in std_logic;
d_out:buffer std_logic_vector(15 downto 0);clk :in std_logic);
end chuan_bing;architecture arch of chuan_bing is signal l: std_logic_vector(15 downto 0);
begin process(clk)begin
if(clk'event and clk='1')then
l(0)<=d_in;
if(load='0')then
for i in 14 downto 0 loop
l(i+1)<=l(i);
end loop;
else
d_out<=l;
end if;end if;end process;end arch;
第二篇:EDA期末复习总结1
面向FPGA的开发流程
综合:由高层次描述自动转换为低层次描述的过程。是EDA技术的核心。
综合器:能够自动将一种设计表示形式向另一种设计表示形式转换的计算机程序。Xilinx公司推出FPGA;Altera公司推出EPLD,Lattice公司提出CPLD和ISP。
VHDL程序的基本结构:库、程序包,实体,结构体,进程,配置。VHDL的本质:并行语句。
不完整IF语句形成时序逻辑电路,完整IF语句形成组合逻辑电路。
常用逻辑门符号与现有国标符号的对照:
第三章VHDL的基础
3.1 VHDL基本语法
实体:描述器件的端口构成及信号端口的基本性质。表达式:entity e_name is port(p_name:port_m data_type;
„„
p_namei:port_mi data_type); end entity e_name;
结构体:描述电路器件的内部逻辑功能和电路结构。
表达式:architecture arch_name of e_name is [说明语句] „„定义或说明数据对象、数据类型、元件调用声明 begin(功能表述语句)end architecture arch_name;
一个可综合的、完整的VHDL程序结构必须包含实体和结构体两个最基本的语言结构。把一个完整的可综合的VHDL程序设计称为设计实体,而其程序代码常被称为VHDL的RTL描述。
4种端口模式:IN,OUT,INOUT,BUFFER。
4种数据类型:integer(整数),boolean(逻辑),std_logic,bit。bit的取值范围是‘1’和‘0’,可以参与逻辑运算或算术运算,其结果仍是位的数据类型。
赋值符号“<=”:
例如y<=a,表示输入端口a的数据向输出端口y传输,或信号a向信号y赋值。赋值操作并非立即发生,而要经历一个模拟器的最小分辨时间δ,δ可以看作实际电路存在的固有延时量。“<=”两边的信号的数据类型必须一致。
数据比较符号“=”:
例如s=‘0’,“=”没有赋值的含义,只是一种数据比较符号。S=‘0’输出结果的数据类型是布尔数据类型BOOLEAN,BOOLEAN数据类型取值是TRUE(真)和FALSE(伪),VHDL仿真器和综合器分别用‘1’和‘0’表达TRUE和FALSE,布尔数据不是数值,只能用于逻辑操作或条件判断。
7种逻辑操作符:and与、or或、not非、nand与非、nor或非、xor异或、xnor同或。
逻辑操作符所要求的操作数的数据类型有3种,即bit、boolean和std_logic。
条件语句:用IF_THEN_ELSE表示VHDL顺序语句。
IF语句表达式:if 条件句 then 顺序语句 else 顺序语句 end if
WHEN_ELSE 条件信号赋值语句:一种并行赋值语句
表达式:赋值目标<=表达式 WHEN 赋值条件 ELSE 例:z<= a when p1=’1’ else
表达式 WHEN 赋值条件 ELSE b when p2=’1’ else
„ c;
表达式; 条件信号赋值语句的第一句具有最高赋值优先。
进程语句:由Process引导的语句: 表达式:Process(a,b,s)
在VHDL中,所有合法的顺序语句都必须放入进程语句中。在结构体中,可以有很多进程语句,所有的进程语句都是并行语句,而由任一进程Process引导的语句结构属于顺序语句。进程语句定义的是变量。描述数字电路时,推荐使用Process语句。
文件取名和存盘
文件名可以由设计者任意给定,但文件后缀扩展名必须是“.vhd”,建议程序的文件名尽可能与该程序的实体名一致,文件名原则上不分大小写,但推荐用小写。
3.2 时序电路描述
VHDL主要通过对时序器件功能和逻辑行为的描述,而非结构上的描述使得计算机综合出符合要求的时序电路。
标准逻辑位数据类型STD_LOGIC:
STD_LOGIC定义:TYPE STD_LOGIC IS(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)
使用库和程序包的一般定义表达式: LIBRARY <设计库名>;
USE <设计库名>.<程序包名>.ALL;
信号定义:signal q1:std_logic 数据对象:信号(signal)、变量(variable)、常量(constant)
信号属性函数:EVENT。所谓信号属性函数是用来获得信号行为信息的函数。测定信号的跳变情况:<信号名>’EVENT 上升沿检测表式为:<信号名>’EVENT AND <信号名>=’1’ 时钟上升沿检测表式为:clk’event and clk=‘1’ 确保clk的变化是一次上升沿的变化:
if clk'event and(clk='1')and(clk'last_value='0')if clk='1' and clk'last_value='0' 3.3
※CASE语句:
case语句属于顺序语句,因此必须放在进程语句中使用。
一般表达式:case <表达式> is when <选择值或标识符>=><顺序语句>;„;<顺序语句>;when <选择值或标识符>=><顺序语句>;„;<顺序语句>;„
when others=><顺序语句>;--一般用null,表示不作任何操作。end case;
并置操作符&:表示将操作数或是数组合并起来形成新的数组。如abc<=a&b。
例化语句:
第一部分是对一个现成的设计实体定义为一个元件,语句的功能是对待调用的元件作出调用声明,其表达式为:component 元件名
port(端口名表);
end component 第二部分则是此元件与当前设计实体中元件间及端口的连接说明,语句的表达式为:
例化名:元件名port map([端口名=>]连接端口名,„);
相关语法说明:
1、变量
variable cqi:std_logic_vector(3 downto 0);变量与信号的区别: 信号:全局量
用于architecture、package、entity中 赋值符号为<= 变量:局部量
用于process、function、procedure中 赋值符号为:=
2、省略赋值操作符(others=>x)
全加器的VHDL描述(书P55)
3.6 数据对象
数据对象: 常量(constant):代表数字电路中电源、地和恒定的逻辑值。
常数定义语句:
变量(variable):代表暂存某些值的载体,常用于描述算法。
变量定义语句:
信号(signal):代表物理设计中的某硬件连接线,包括输入输出端口。
信号定义语句:
信号赋值语句:
变量与信号的差异(总结): 1)赋值方式的不同:
变量:= 表达式;
信号 < = 表达式;
2)硬件实现的功能不同:
信号代表电路单元、功能模块间的互联,代表实际的硬件连线;
变量代表电路单元内部的操作,代表暂存的临时数据。
3)有效范围的不同:
信号:程序包、实体、结构体;全局量。
变量:进程、子程序;局部量。4)赋值行为的不同:
信号赋值延迟更新数值、时序电路;
变量赋值立即更新数值、组合电路。
3.7 IF语句概述
※IF语句:
3.8 进程语句归纳
Process语句结构的一般表达格式如下:
[进程标号:] process [(敏感信号参数表)] [is] [进程说明部分](定义该进程所需的局部数据环境)begin 顺序描述语句(描述该进程的行为)end process [进程标号];
第四章QuartusⅡ的使用
建立工作库文件夹和编辑设计文件,创建工程,编译前设置,全程编译,时序仿真,应用RTL电路图观察器,引脚锁定,配置文件下载,编程配置器件,Signal TapⅡ实时测试。(文本编辑,功能仿真,逻辑综合,布局布线,时序仿真,编程下载)
第五章VHDL状态机
用户自定义数据类型是用类型定义语句TYPE和子类型定义语句SUBTYOPE实现的
5.1 状态机设计相关语句
TYPE类型定义语句:
VHDL中的枚举数据类型是一种特殊的数据类型,它们是用文字符号来表示一组实际的二进制数。设计者在状态机的设计中,为了利于阅读、编译和VHDL综合器的优化,往往将表征状态的二进制数组用文字符号来代替,即所谓的状态符号化。
枚举类型也可以直接用数值来定义,但必须使用单引号。枚举数据,在综合过程中,都将转化为二进制代码。编码顺序是默认的。编码数值:一般将第一个枚举量编码为‘0’或“0000”,以后依次加1。编码的位矢量长度根据实际情况决定。
子类型subtype是由type所定义的原数据类型的一个子集,它满足原数据类型的所有约束条件,原数据类型称为基本数据类型。子类型并没有定义新的数据类型。
子类型subtype的语句格式:
5.1.3
状态机的结构
最一般最常用的状态机通常包括:说明部分,主控时序进程,主控组合进程,辅助进程。
现态信号current_state,次态信号next_state。
真值表:
5.2 Moore状态机设计
从状态机的信号输出方式上分,有Moore型和Mealy型两类状态机。
Moore型状态机的输出仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟使状态变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。
Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。
从输出时序上看,Moore属于同步输出状态机,而Mealy属于异步输出状态机。
摩尔(Moore)型状态机的输出仅与当前状态有关:
异步复位:目的在加电时建立一个初始状态,并避免非法状态;
摩尔(Moore)型状态机真值表:
多进程Moore状态机的输出信号是由组合电路发出的,所以在一些特定情况下难免出现毛刺现象。如果这些输出信号用作时钟信号,极易产生错误的操作,需尽力避免。单进程Moore状态机较容易构成能避免出现毛刺现象的状态机。
5.3 Mealy 状态机
Mealy状态机的输出不仅是当前状态的函数,也是输入信号的函数。
Mealy 状态机真值表:
第七章VHDL语句
7.1 VHDL顺序语句(Sequential)
硬件执行:并行执行(VHDL本质)仿真执行:顺序执行、并行执行
分为两大类:顺序(Sequential)描述语句、并行(Concurrent)描述语句
顺序语句只能用在进程与子程序中。可描述组合逻辑、时序逻辑。常用的顺序描述语句:赋值语句; if语句;case语句;loop语句; next语句;exit语句;子程序调用语句; return语句;wait语句;null语句。
7.1.4 LOOP语句
LOOP语句就是循环语句,它可以使所包含的一组顺序语句被循环执行,其执行次数可由设定的循环参数决定。
LOOP语句的常用表达方式有两种。
(1)单个LOOP语句,其语法格式如下:
[LOOP标号:] LOOP
顺序语句
END LOOP [LOOP标号:];
该语句形式的循环方式需引入其它控制语句(如EXIT语句)才能确定。
(2)FOR_LOOP语句,其语法格式如下:
[LOOP标号:] FOR 循环变量,IN 循环次数范围 LOOP 顺序语句
END LOOP [LOOP标号:];
7.1.5 NEXT 语句
NEXT语句主要用在LOOP语句执行中进 行有条件的或无条件的转向控制,它的语句格式有3种。
(1)第一种语句格式:NEXT;
当LOOP内的顺序语句执行到NEXT语句时,即刻无条件终止当前的循环,跳回到本次循环LOOP语句处,开始下一次循环。
(2)第二种语句格式:NEXT LOOP标号;
在当有多重LOOP语句嵌套时,可以跳转到指定标号的LOOP语句处,重新开始执行循环操作。
(3)第三种语句格式:NEXT LOOP标号 WHEN 条件表达式 ;
分句“WHEN 条件表达式”是执行NEXT语句的条件,如果条件表达式的值为TRUE,则执行NEXT语句,进入跳转操作,否则继续向下执行。但当只有单层LOOP循环语句时,关键词NEXT和WHEN之间的“LOOP标号”可以省去。
7.1.6 EXIT语句
EXIT 语句为LOOP语句的内部循环控制语句,将结束循环状态。
EXIT;--第一种语句格式 EXIT LOOP标号;--第二种语句格式
EXIT LOOP标号 WHEN 条件表达式 ;--第三种语句格式
NEXT语句与EXIT语句的格式与操作功能非常相似,区别是: NEXT语句是跳向LOOP语句的起始点,而EXIT语句则是跳向LOOP语句的终点。
7.1.7 WAIT语句
在进程中,当执行到WAIT(等待)语句时,运行程序将被挂起,直到满足此语句设置的结束挂起条件之后,才重新开始执行进程中的程序。
wait--无限等待
wait on 信号表--敏感信号等待语句 wait until 条件表达式--条件满足(可综合)wait for 时间表达式--时间到,超时等待语句
1、wait on 语句
格式:wait on 信号[,信号];
2、wait until 语句(可综合)
格式:wait until 表达式;
当表达式的值为“真”时,进程被启动,否则进程被挂起。
三种表达方式:
wait until 信号 = value;wait until 信号’event and 信号 = value;wait until not(信号’stable)and 信号 = value;时钟信号 clk 的上升沿的描述:
wait until clk = ‘1’;
wait until rising_edge(clk);wait until clk’event and clk = ‘1’;
wait until not(clk’stable)and clk = ‘1’;
7.1.9
return 语句
return 语句只能用于子程序中,并用来终止一个子程序的执行。
格式:return [表达式];
分为:1)return ;
用于过程,只是结束过程,不返回任何值。2)return 表达式;
用于函数,并且必须返回一个值。
7.1.9
空操作语句
空操作语句不完成任何操作,它唯一的功能就是使逻辑运行流程跨入下一步语句的执行。NULL常用于CASE语句中,为满足所有可能的条件,利用NULL来表示剩余条件下的操作行为。
格式: NULL;
7.2
并行语句(Concurrent Statements)
结构体中可综合的并行描述语句有:
并行信号赋值语句,条件信号赋值语句,选择信号赋值语句,进程语句,块语句,元件例化语句,生成语句,参数传递映射语句,过程调用语句,端口说明语句。
使用格式: ARCHITECTURE 结构体名 OF 实体名 IS 说明语句
BEGIN 并行语句
END ARCHITECTURE 结构体名
名词解释
EDA--------电子设计自动化(Electronic Design Automation)VHDL------超高速集成电路硬件描述语言
(Very-High-Speed Integrated Circuit HardwareDescription Language)CPLD------复杂可编程逻辑器件(Complex Programmable Logic Device)EPLD--------电可编程逻辑器件(Electrically Programmable Logic Device)FPGA------现场可编程门阵列(Field-Programmable Gate Array)
ASIC-------专用集成电路(Application Specific Integrated Circuit)LUT---------显示查找表(Look-Up-Table)ISP----------在系统可编程技术(In_System Programmability Programming)
第三篇:EDA(解答题)EDA期末总结8
1章
ENTITY AD574 IS STD_LOGIC;并行信号赋值语句;进程语句;块语句;条件信号赋值语句;元件例化语
PORT(D :IN STD_LOGIC_VECTOR(11
Q : OUT
1、常用的硬件描述语言有VHDL、Verilog、ABEL 句;生成语句;并行过程调用语句。DOWNTO 0);
STD_LOGIC_VECTOR(4 DOWNTO 0));
2、VHDL自顶向下的设计流程:
4、什么叫并行语句?
CLK ,STATUS : IN STD_LOGIC;--状END MEALY1;1.设计说明书2.建立VHDL行为模型3.VHDL行为仿真4.VHDL-RTL在结构体的执行是同步进行的,或者说是并行运行的,其执行方式
ARCHITECTURE behav OF MEALY1 IS 态机时钟CLK,AD574状态信号STATUS 级建模 与书写的顺序无关。
TYPE states IS(st0, st1, st2, st3,st4);
LOCK0
: OUT STD_LOGIC;5.前端功能仿真6.逻辑综合7.测试向量生成8.功能仿真9.结
5、VHDL中具有属性的项目:
SIGNAL STX : states;
--内部锁存信号LOCK的测试信号 构综合10.门级时序仿真11.硬件测试12.设计完成 类型、子类型、过程、函数、信号、变量、常量、实体、结构体、BEGIN
CS,A0,RC,K12X8 : OUT STD_LOGIC;2章 配置、程序包、元件和语句标号等。
COMREG : PROCESS(CLK,RESET)--AD574控制信号
BEGIN--决定转换状态的进程 1.一般ASIC设计的流程:
6、综合器支持的属性有:
Q : OUT STD_LOGIC_VECTOR(11
IF RESET ='1' THEN 系统规格说明:系统划分:逻辑设计与综合:综合后仿真:版图设LEFT、RIGHT、HIGH、LOW、RANGE、REVERS RANGE、LENGTH、DOWNTO 0));--锁存数据输出
STX <= ST0;计:版图验证:参数提取与后仿真:制版、流片:芯片测试 EVENT及STABLE。END AD574;
ELSIF CLK'EVENT AND CLK = '1'
2、常用EDA工具: ARCHITECTURE behav OF AD574 IS
THEN 设计输入编辑器:HDL综合器:仿真器:适配器(或布局布线器):TYPE states IS(st0, st1, st2, st3,st4);
CASE STX IS
SIGNAL current_state, next_state: 下载器
WHEN st0 => IF DATAIN = '1' states :=st0;
3、IP核:软IP硬IP固IP THEN STX <= st1;END IF;
SIGNAL REGL : 3章
WHEN st1 => IF DATAIN = '0' STD_LOGIC_VECTOR(11 DOWNTO 0);
1、CPLD和FPGA的主要区别: THEN STX <= st2;END IF;
SIGNAL LOCK : STD_LOGIC;
WHEN st2 => IF DATAIN = '1' 结构上的不同:集成度的不同:CPLD:500~50000门;FPGA:1K~10M门:应用范围不同:CPLD逻辑能力强而寄存器少(1K左右),适用于控制密集型系统;FPGA逻辑能力较弱但寄存器多(100多K),适用于数据密集型系统。使用方法不同
2、FPGA和CPLD的选用(1)CPLD的选用: 逻辑密集型:中小规模(1000~50000):免费软件支持;编程数据不丢失,电路简单;ISP特性,编程加密;布线延迟固定,时序特性稳定;(2)FPGA选用: 数据密集型;大规模设计(5000~数百万门);SOC设计:ASIC的设计仿真:布线灵活,但时序特性不稳定;需用专用的ROM进行数据配置 4章
1、EDA综合工具提供的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整数型(Interger)。
2、VHDL语言描述结构体功能有3种方法:行为描述法:数据流描述法;结构描述法
3、VHDL的库:STD库和WORK库:IEEE库
4、clock’EVENT and clock=‘1检测上升沿;clock’EVENT and clock=‘0’检测下降沿。
5、简述实体、端口概念,端口种类及INPUT与BUFFER的异同。以关键词ENTITY引导,END ENTITY....结束的语句部分成为实体。端口种类4种:IN、OUT、INOUT、BUFFER。INOUT定义的通道确定为输入输出双向端口;、BUFFER在需要输入数据是时,只允许内不回读输出的信号。
6、结构体 以关键词ARCHITECTURE引导,END 结束的语句部分成为结构体。
7、端口: INOUT定义的通道为输入输出双向端口,可以由外向内或由内向外传输数据,而BUFFER定义的通道虽然也是输入输出端口,但它回读的信号不能从外部输入,而是由内部产生,向外输出的信号。IN定义的通道为单向只读模式,规定数据只能通过此端口被读入实体中 OUT定义的通道为单向输出模式,规定数据只能通过此端口从实体向外流出,或者说可以将实体中的数据向此端口赋值。INOUT定义的通道确定为输入输出双向端口,可以由外向内或由内向外传输数据。6章
1、说明用原理图输入方法设计电路的详细流程 1.为一项工程设计建立文件夹 2.输入设计项目和存盘 3.将设计项目设置成工程文件 4.选择目标器件并编译 5时序仿真和包装入库 6.设计顶层文件 7章
1、为什么要使用状态机 有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。状态机的结构模式相对简单。状态机容易构成性能良好的同步时序逻辑模块。状态机的VHDL表述丰富多样。在高速运算和控制方面,状态机更有其巨大的优势。就可靠性而言,状态机的优势也是十分明显的。
2、时序进程将次态信号送到现态信号
3、Moore型输出仅与当前状态有关,Mealy型输出是当前状态与所有输入信号
FSM:s_machine current_state clkPROCESSPROCESSREGCOMreset next_statecomb_outputsstate_inputs
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine IS
PORT(clk,reset
: IN STD_LOGIC;
state_inputs : IN STD_LOGIC_VECTOR(0 TO 1);
comb_outputs : OUT INTEGER RANGE 0 TO 15);END s_machine;ARCHITECTURE behv OF s_machine 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, state_Inputs)BEGIN
CASE current_state IS
WHEN s0 => comb_outputs<= 5;
IF state_inputs = “00” THEN next_state<=s0;
ELSE next_state<=s1;
END IF;
WHEN s1 => comb_outputs<= 8;
IF state_inputs = “00” THEN next_state<=s1;
ELSE next_state<=s2;
END IF;
WHEN s2 =>
comb_outputs<= 12;
IF state_inputs = “11” THEN next_state <= s0;
ELSE next_state <= s3;
END IF;
WHEN s3 => comb_outputs <= 14;
IF state_inputs = “11” THEN next_state <= s3;
ELSE next_state <= s0;
END IF;
END case;
END PROCESS;
END behv;
3、三进程有限状态机 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;BEGIN
K12X8 <= '1';
LOCK0 <= LOCK;
COM1: PROCESS(current_state,STATUS)--决定转换状态的进程 BEGIN
CASE current_state IS
WHEN st0 => next_state <= st1;
WHEN st1 => next_state <= st2;
WHEN st2 => IF(STATUS='1')THEN next_state <= st2;
ELSE
next_state <= st3;
END IF;
WHEN st3=>
next_state <= st4;
WHEN st4=>
next_state <= st0;
WHEN OTHERS => next_state <= st0;
END CASE;
END PROCESS COM1;COM2: PROCESS(current_state)--输出控制信号的进程
BEGIN
CASE current_state IS
WHEN st0=> CS<='1';A0<='1';RC<='1';LOCK<='0';--初始化
WHEN st1=> CS<='0';A0<='0';RC<='0';LOCK<='0';--启动12位转换
WHEN st2=> CS<='0';A0<='0';RC<='0';LOCK<='0';--等待转换 WHEN st3=> CS<='0';A0<='0';RC<='1';LOCK<='0';--12位并行输出有效
WHEN st4=> CS<='0';A0<='0';RC<='1';LOCK<='1';--锁存数据
WHEN OTHERS=>CS<='1';A0<='1';RC<='1';LOCK<='0';--其它情况返回初始态
END CASE;
END PROCESS COM2;
REG: PROCESS(CLK)--时序进程
BEGIN
IF(CLK'EVENT AND CLK='1')THEN current_state <= next_state;
END IF;
END PROCESS REG;
LATCH1 : PROCESS(LOCK)--数据锁存器进程
BEGIN
IF LOCK='1' AND LOCK'EVENT THEN
REGL <= D;
END IF;
END PROCESS;
Q <= REGL;END behav;
5、单进程有限状态机 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MOORE1 IS
PORT(DATAIN :IN STD_LOGIC_VECTOR(1 DOWNTO 0);
CLK,RST : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END MOORE1;ARCHITECTURE behav OF MOORE1 IS
TYPE ST_TYPE IS(ST0, ST1, ST2, ST3,ST4);
SIGNAL C_ST : ST_TYPE;
BEGIN
PROCESS(CLK,RST)
BEGIN
IF RST ='1' THEN C_ST <= ST0;Q<= “0000”;
ELSIF CLK'EVENT AND CLK='1' THEN
CASE C_ST IS
WHEN ST0 => IF DATAIN =“10” THEN C_ST <= ST1;
ELSE C_ST <= ST0;END IF;
Q <= “1001”;
WHEN ST1 => IF DATAIN =“11” THEN C_ST <= ST2;
ELSE C_ST <= ST1;END IF;
Q <= “0101”;
WHEN ST2 => IF DATAIN =“01” THEN C_ST <= ST3;
ELSE C_ST <= ST0;END IF;
Q <= “1100”;
WHEN ST3 => IF DATAIN =“00” THEN C_ST <= ST4;
ELSE C_ST <= ST2;END IF;
Q <= “0010”;
WHEN ST4 => IF DATAIN =“11” THEN C_ST <= ST0;
ELSE C_ST <= ST3;END IF;
Q <= “1001”;
WHEN OTHERS => C_ST <= ST0;
END CASE;
END IF;
END PROCESS;END behav;
6、Mealy型有限状态机的设计
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;ENTITY MEALY1 IS PORT(CLK ,DATAIN,RESET : IN THEN STX <= st3;END IF;
WHEN st3=> IF DATAIN = '0' THEN STX <= st4;END IF;
WHEN st4=> IF DATAIN = '1'
THEN STX <= st0;END IF;
WHEN OTHERS => STX <= st0;
END CASE;
END IF;
END PROCESS COMREG;COM1: PROCESS(STX,DATAIN)BEGIN--输出控制信号的进程
CASE STX IS
WHEN st0 => IF DATAIN = '1' THEN
Q <= “10000”;
ELSE Q<=“01010”;
END IF;
WHEN st1 => IF DATAIN = '0' THEN Q <= “10111”;
ELSE Q<=“10100”;
END IF;
WHEN st2 => IF DATAIN = '1' THEN Q <= “10101”;
ELSE Q<=“10011”;
END IF;
WHEN st3=> IF DATAIN = '0' THEN Q <= “11011”;
ELSE Q<=“01001”;
END IF;
WHEN st4=> IF DATAIN = '1' THEN Q <= “11101”;
ELSE Q<=“01101”;
END IF;
WHEN OTHERS => Q<=“00000”;
END CASE;
END PROCESS COM1;
END behav;
7、状态编码
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY AD574A IS
PORT(D : IN
STD_LOGIC_VECTOR(11 DOWNTO 0);
CLK ,STATUS : IN STD_LOGIC;
OUT4 : OUT
STD_LOGIC_VECTOR(3 DOWNTO 0);
Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0));END AD574A;ARCHITECTURE behav OF AD574A IS SIGNAL current_state, next_state: STD_LOGIC_VECTOR(4 DOWNTO 0);
CONSTANT st0 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “11100”;
CONSTANT st1 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00001”;
CONSTANT st2 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00000”;
CONSTANT st3 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00100”;
CONSTANT st4 : STD_LOGIC_VECTOR(4 DOWNTO 0):= “00110”;
SIGNAL REGL
: STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL LK
: STD_LOGIC;
BEGIN
COM1: PROCESS(current_state,STATUS)
--决定转换状态的进程 BEGIN
CASE current_state IS
WHEN st0 => next_state <= st1;
WHEN st1 => next_state <= st2;
WHEN st2 => IF(STATUS='1')THEN next_state <= st2;
ELSE
next_state <= st3;
END IF;
WHEN st3=> next_state <= st4;
WHEN st4=> next_state <= st0;
WHEN OTHERS => next_state <= st0;
END CASE;
OUT4 <= current_state(4 DOWNTO 1);END PROCESS COM1;
REG: PROCESS(CLK)--时序进程
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
current_state <= next_state;
END IF;
END PROCESS REG;
LK <= current_state(1);
LATCH1 : PROCESS(LK)--数据锁存器进程
BEGIN
IF LK='1' AND LK'EVENT THEN
REGL <= D;
END IF;
END PROCESS;
Q <= REGL;
END behav;9章
1、VHDL有那几种基本的顺序语句? 赋值语句;流程控制语句;等待语句;子程序调用语句;返回语句;空操作语句。
2、什么叫顺序语句,它的适用范围是什么? 执行顺序与它们的书写顺序基本一致的语句叫顺序语句,顺序语句只能出现在进程和子程序中,子程序包括函数和过程。3、VHDL并行语句几种?
第四篇:EDA总结
一、有关概念
1.ASIC全称:专用集成电路; 2.FPGA:现场可编程门阵列 3.CPLD:复杂可编程逻辑器件; 4.VHDL全称:硬件描述语言; 5.全定制; 6.半定制;
7.IP核;IP就是知识产权核或知识产权模块的意思
8.综合(器);综合就是将电路的高级语言(如行为描述)转换为低级的,可与FPGA/CPLD的基本结构相映射的网表文件或程序。
9.适配(器);适配器也称结构综合器,它的功能是将综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。
10.功能仿真;是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求
11.时序仿真;就是接近真实器件运行特性的仿真,仿真文件中已包含了器件硬件特性参数,因而,仿真精度高。
12.编程下载;把适配后生成的下载或配置文件,通过编程器或编程电缆向FPGA或CPLD下载,以便进行硬件测试和验证 13.PROM;可编程只读存储器 14.PLA;可编程逻辑阵列 15.PAL;可编程阵列逻辑 16.查找表; 17.乘积项;
18.实体;VHDL实体作为一个设计实体(独立的电路功能结构)的组成部分,其功能是对这个设计实体与外部电路进行接口描述。
19.结构体;结构体是实体所定义实体中的一个组成部分。结构体描述设计实体的内部结构和外部设计实体端口间的逻辑关系。
20.元件例化;元件例化意味着在当前结构体内定义了一个新的设计层次,这个设计层次的总称叫元件,但它可以以不同的形式出现。?? 21.时钟进程; 22.三态; 23.线与; 24.数据对象;
25.变量;变量是一个局部量,只能在进程和子程序中使用,变量的赋值是立即发生的,不存在任何延时行为。
26.信号;信号是硬件系统的基本数据对象,它的性质类似于连接线。信号可以作为设计实体中并行语句模块间的信息交流通道
27.Moore型状态机;异步输出状态机,输出仅为当前状态的函数,在输入发生变化时还必须等待时钟的到来。
28.Mealy型状态机;同步输出状态机,输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的。不依赖于时钟的同步。
注意:
1.<= 对信号SIGNAL的赋值 := 是对变量variable的赋值
2.程序的实体名必须和文件名一致,例1中二输入与门的文件名必须为yumen
一、有关概念
ASIC全称;FPGA和CPLD全称;VHDL全称;全定制;半定制; IP核;综合(器);适配(器);功能仿真;时序仿真;编程下载;PROM;PLA;PAL;查找表;乘积项;实体;结构体;元件例化;时钟进程;三态;线与; 数据对象;变量;信号; Moore型状态机;Mealy型状态机。
二、程序分析及设计
1、二输入与门的VHDL语言设计。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY yumen IS
PORT(a, b : IN BIT;
y : OUT BIT);END ENTITY yumen;ARCHITECTURE one OF yumen IS BEGIN y <= a AND b;END ARCHITECTURE one;
2、带有异步复位和同步时钟使能的6进制计数器VHDL语言设计。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jinzhi IS PORT(CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);COUT : OUT STD_LOGIC);END jinzhi;ARCHITECTURE behav OF jinzhi IS BEGIN PROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN IF RST = '1' THEN CQI :=(OTHERS =>'0');--计数器复位 ELSIF CLK'EVENT AND CLK='1' THEN--检测时钟上升沿 IF EN = '1' THEN--检测是否允许计数 IF CQI < 5 THEN CQI := CQI + 1;--允许计数
ELSE CQI :=(OTHERS =>'0');--大于5,计数值清零 END IF;END IF;END IF;IF CQI = 5 THEN COUT <= '1';--计数大于5,输出进位信号 ELSE COUT <= '0';END IF;CQ <= CQI;--将计数值向端口输出 end PROCESS;END behav;
3、用VHDL语言设计2选1数据选择器。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY erxuanyi IS PORT(a, b, s: IN BIT;y : OUT BIT);END erxuanyi;ARCHITECTURE one OF erxuanyi IS BEGIN PROCESS(a,b,s)BEGIN IF s = '0' THEN y <= a;ELSE y <= b;END IF;END PROCESS;END;
4、边沿型T、D触发器VHDL语言设计。--D触发器
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DFF IS PORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF DFF IS SIGNAL Q1 : STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= D;END IF;END PROCESS;Q <= Q1;END bhv;
--T触发器
有clk且为1的时候,T与当前状态异或
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tff IS PORT(CLK : IN STD_LOGIC;T : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF tff IS SIGNAL Q1 : STD_LOGIC;BEGIN PROCESS(CLK)BEGIN IF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 XOR T;END IF;END PROCESS;Q <= Q1;END bhv;
5、带并行置数的8位右移移位寄存器VHDL语言设计。
library ieee;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT IS PORT(CLK,LOAD: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
QB:OUT STD_LOGIC);END SHFRT;
ARCHITECTURE BEHAV OF SHFRT IS BEGIN PROCESS(CLK,LOAD)
VARIABLE REG8: STD_LOGIC_VECTOR(7 TO 0);BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF LOAD='1' THEN REG8:=DIN;
ELSE REG8(6 DOWNTO 0):=REG8(7 DOWNTO 1);
END IF;
END IF;
QB<=REG8(0);END PROCESS;END BEHAV;--说明:当clk有上升沿,而且load为1的时候把din的值赋给REG8,如果clk有上升沿,而且load为0的时候把REG8的高7为赋给低7位(注意此时最高位不变)6、1位半加器VHDL语言设计。(布尔逻辑描述)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY banjia IS PORT(a,b : IN STD_LOGIC;co,so : OUT STD_LOGIC);END ENTITY banjia;ARCHITECTURE fh1 OF banjia IS BEGIN so <= not(a xor(not b));co <= a and b;END ARCHITECTURE fh1;
7、用VHDL语言设计实现四选一数据选择器。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sixuan IS PORT(a, b, c , d: IN BIT;
s: IN STD_LOGIC_VECTOR(1 DOWNTO 0);y : OUT BIT);END sixuan;ARCHITECTURE one OF sixuan IS BEGIN PROCESS(a,b,c,d,s)BEGIN case s(1 DOWNTO 0)is when “00” => y <= a;when “01” => y <= b;when “10” => y <= c;when “11” => y <= d;when others => null;END case;END PROCESS;END;
8、用VHDL语言实现三态门设计。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY santai IS port(enable : IN STD_LOGIC;datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0);dataout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END santai;ARCHITECTURE bhv OF santai IS BEGIN PROCESS(enable,datain)BEGIN IF enable = '1' THEN dataout <= datain;ELSE dataout <=“ZZZZZZZZ”;END IF;END PROCESS;END bhv;
9、设有VHDL描述的半加器h_adder和或门or2,试通过层次化设计思想设计由半加器和或门构成的一位二进制全加器的VHDL程序。全加器f_adder电路结构组成图如下所示。
半加器h_adder LIBRARY IEEE;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 BEGIN so <=(a OR b)AND(a NAND b);co <= NOT(a NAND b);END ARCHITECTURE fh1;
或门 or2a LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a IS PORT(a, b :IN STD_LOGIC;c : OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a IS BEGIN c <= a OR b;END ARCHITECTURE one;
元件例化adder library ieee;use ieee.std_logic_1164.all;entity adder is port(ain,bin,cin:in std_logic;
cout,sum :out std_logic);end entity adder;architecture fd1 of adder is 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 map(a=>d,b=>f,c=>cout);end architecture fd1;
第五篇:EDA期末考试题
附带: 一.问答题
1信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别?
信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。
信号赋值符号为“<=”变量赋值用“:=”。信号赋值符号用于信号赋值动作,不立即生效。变量,赋值符号用于变量赋值动作,立即生效。
2进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用?
进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号间以“,”号分隔。当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。
3什么是库、程序包、子程序、过程调用和函数调用?
库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、调用。子程序由过程和函数组成。在子程序调用过程中,过程能返回多个变量,函数只能返回一个变量。若子程序调用的是一个过程,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。过程调用、函数调用都是子程序调用。
二.改错题
1.已知sel为STD_LOGIC_VECTOR(1 DOWNTO 0)类型的信号,而a、b、c、d、q均为STD_LOGIC类型的信号,请判断下面给出的CASE语句程序片段:
CASE sel IS WHEN“00”=>q<=a; WHEN“01”=>q<=b; WHEN“10”=>q<=c; WHEN“11”=>q<=d; END CASE; 2. 答案:CASE语句缺“WHEN OTHERS”语句。
已知data_in1, data_in2为STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输入端口,data_out为 STD_LOGIC_VECTOR(15 DOWNTO 0)类型的输出端口,add_sub为STD_LOGIC类型的输入端口,请判断下面给出的程序片段:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY add IS PORT(data_in1, data_in2:IN INTEGER; data_out:OUT INTEGER); END add;
ARCHTECTURE add_arch OF add IS CONSTANT a:INTEGER<=2; BEGIN data_out<=(data_in1+ data_in2)* a; END addsub_arch; 3.答案:常量声明时赋初值的“<=”符号应改用“:=”符号。已知Q为STD_LOGIC类型的输出端口,请判断下面的程序片段: ARCHITECTURE test_arch OF test IS BEGIN SIGNAL B:STD_LOGIC; Q<= B;
END test_arch 答案:信号SIGNAL的声明语句应该放在BEGIN语句之前。
4.已知A和Q均为BIT类型的信号,请判断下面的程序片段: ARCHITECTURE archtest OF test IS BEGIN CASE A IS WHEN ‘0’=>Q<=‘1’; WHEN ‘1’=>Q<=‘0’; END CASE; END archtest;
答案:CASE语句应该存在于进程PROCESS内。
三.程序设计
1@4位二进制并行加法器的源程序ADDER4B.VHD LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER4B IS--4位二进制并行加法器 PORT(CIN:IN STD_LOGIC;--低位进位
A: IN STD_LOGIC_VECTOR(3 DOWNTO 0);--4位加数 B: IN STD_LOGIC_VECTOR(3 DOWNTO 0);--4位被加数 S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--4位和 CONT: OUT STD_LOGIC); END ADDER4B;
ARCHITECTURE ART OF ADDER4B IS SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL AA,BB: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN AA<='0'& A;--将4位加数矢量扩为5位,为进位提供空间 BB<='0'& B;--将4位被加数矢量扩为5位,为进位提供空间 SINT<=AA+BB+CIN ; S<=SINT(3 DOWNTO 0); CONT<=SINT(4); END ART;
2@ 8位二进制加法器的源程序ADDER8B.VHD LIBRARY IEEE;
USE IEEE_STD.LOGIC_1164.ALL; USE IEEE_STD.LOGIC_UNSIGNED.ALL: ENTITY ADDER8B IS--由4位二进制并行加法器级联而成的8位二进制加法器 PORT(CIN:IN STD_LOGIC;
A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT:OUT STD_LOGIC); END ADDER8B;
ARCHICTURE ART OF ADDER8B IS COMPONENET ADDER4B--对要调用的元件ADDER4B的界面端口进行定义 PORT(CIN:IN STD_LOGIC;
A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CONT:OUT STD_LOGIC);
END COMPONENT ;
SIGNAL CARRY_OUT:STD_LOGIC;--4位加法器的进位标志 BEGIN U1:ADDER4B--例化(安装)一个4位二进制加法器U1 PORT MAP(CIN=>CIN,A=>A(3 DOWNTO 0),B=>B(3 DOWNTO0),S=>S(3 DOWNTO 0),COUT=>CARRY_OUT);
U2:ADDER4B--例化(安装)一个4位二进制加法器U2 PORT MAP(CIN=>CARRY_OUT,A=>A(7 DOWNTO 4),B=>B(7 DOWNTO 4),S=>S(7 DOWNTO 4);CONT=>CONT); END ART;
3.@触发器和缓冲器
D触发器:Process(clk)begin if(clk’event and clk=‘1’)then q <= d;end if;end process;缓冲器:Process(clk)begin if(clk=‘1’)then q <= d;end if;
end process;
T触发器:Process(clk)begin
if(clk’event and clk=‘1’)then
if(t = ‘1’)then q <= not(q);else
q <= q;end if;end if;end process;4.@16位锁存器的源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG16B IS
--16位锁存器
PORT(CLK:IN STD_LOGIC;--锁存信号 CLR:IN STD_LOGIC;--清零信号
D:IN STD_LOGIC_VECTOR(8 DOWNTO 0)--8位数据输入 Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--16位数据输出 END REG16B;
ARCHITECTURE ART OF REG16B IS SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);--16位寄存器设置 BEGIN PROCESS(CLK,CLR)BEGIN IF CLR = '1' THEN R16S<= “***0”;--异步复位信号
ELSIF CLK'EVENT AND CLK = '1' THEN--时钟到来时,锁存输入值
R16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1);--右移低8位
R16S(15 DOWNTO 7)<=D;--将输入锁到高能位 END IF;
END PROCESS; Q<=R16S; END ART;
5@8位右移寄存器的源程序SREG8B.VHD LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY SREG8B IS PORT(CLK:IN STD_LOGIC; LOAD :IN STD _LOGIC; BIN:IN STD_LOGIC_VECTOR(7DOWNTO 0); QB:OUT STD_LOGIC); END SREG8B;
ARCHITECTURE ART OF SREG8B IS SIGNAL REG8B:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK,LOAD)BEGIN IF CLK'EVENT AND CLK= '1' THEN IF LOAD = '1' THEN REG8<=DIN;
END IF; END IF; END PROCESS; QB<= REG8(0); END ART;
--输出最低位
--装载新数据
ELSE REG8(6 DOWNTO0)<=REG8(7 DOWNTO 1);--数据右移
--8位右移寄存器
6@8位乘法器的源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;--8位乘法器顶层设计 ENTITY MULTI8X8 IS PORT(CLK:IN STD_LOGIC; START:IN STD_LOGIC;
--乘法启动信号,高电平复位与加载,低电平运算
A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);--8位被乘数 B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);--8位乘数 ARIEND:OUT STD_LOGIC;--乘法运算结束标志位
DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--16位乘积输出 END MULTI8X8;
ARCHITECTURE ART OF MULTI8X8 IS COMPONENT ARICTL--待调用的乘法控制器端口定义 PORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC;RSTALL:OUT STD_LOGIC;
ARIEND:OUT STD_LOGIC); END COMPONENT;
COMPONENT ANDARITH--待调用的控制与门端口定义 PORT(ABIN:IN STD_LOGIC;
DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT:OUT_STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT;
COMPONENT ADDER8B--待调用的8位加法器端口定义 COMPONENT SREG8B ... COMPONENT REG16B ...
SIGNAL GNDINT:STD_LOGIC; SIGNAL INTCLK:STD_LOGIC; SIGNAL RSTALL:STD_LOGIC; SIGNAL QB:STD_LOGIC;
SIGNAL ANDSD:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL DTBIN:STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL DTBOUT:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN DOUT<=DTBOUT;GNDINT<= '0';
U1:ARICTL PORT MAP(CLK=>CLK,START=>START,CLKOUT=>INTCLK,RSTALL=>RSTALL,ARIEND=>ARIEND); U2:SREG8B PORT MAP(CLK=>INTCLK,LOAD=>RSTALL.DIN=>B,QB=>QB);
U3:ANDARITH PORT MAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD); U4:ADDER8B PORT MAP(CIN=>GNDINT,A=>DTBOUT(15 DOWNTO 8),B=>ANDSD,S=>DTBIN(7 DOWNTO 0),COUT =>DTBIN(8)); U5:REG16B PORT MAP(CLK =>INTCLK,CLR=>RSTALL,D=>DTBIN,Q=>DTBOUT); END ART;--待调用的16右移寄存器端口定义--待调用的8位右移寄存器端口定义
7@有时钟使能的十进制计数器的源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT(CLK:IN STD_LOGIC;
--计数时钟信号
--清零信号--计数使能信号 CLR:IN STD_LOGIC; END:IN STD_LOGIC;
--有时钟使能的十进制计数器
CQ:OUT INTEGER RANGE 0 TO 15;--4位计数结果输出 CARRY_OUT:OUT STD_LOGIC);--计数进位 END CNT10;
ARCHITECTURE ART OF CNT10 IS
SIGNAL CQI :INTEGER RANGE 0 TO 15; BEGIN BEGIN
--计数器异步清零 PROCESS(CLK,CLR,ENA)
IF CLR= '1' THEN CQI<= 0;
IF ENA= '1' THEN IF CQI<9 THEN CQI<=CQI+1; ELSE CQI<=0;END IF; END IF; END IF; END PROCESS; PROCESS(CQI)BEGIN IF CQI=9 THEN CARRY_OUT<= '1';--进位输出 ELSE CARRY_OUT<= '0';END IF; END PROCESS; CQ<=CQI; END ART;
--等于9,则计数器清零 ELSIF CLK'EVENT AND CLK= '1' THEN 8@)六进制计数器的源程序CNT6.VHD(十进制计数器的源程序
CNT10.VHD与此类似)LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT6 IS PORT(CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; ENA: IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT: OUT STD_LOGIC); END CNT6;
ARCHITECTURE ART OF CNT6 IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,CLR,ENA)BEGIN IF CLR='1' THEN CQI<=“0000”; ELSIF CLK'EVENT AND CLK='1' THEN IF ENA='1' THEN IF CQI=“0101” THEN CQI<=“0000”; ELSE CQI<=CQI+'1';END IF; END IF; END IF;
END PROCESS; PROCESS(CQI)BEGIN IF CQI=“0000” THEN CARRY_OUT<='1'; ELSE CARRY_OUT<='0';END IF; END PROCESS; CQ<=CQI; END ART;
9@十进制计数器
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count10 IS PORT(clk: IN STD_LOGIC;
seg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END count10;
ARCHITECTURE a1 OF count10 IS signal sec: STD_LOGIC;
signal q : STD_LOGIC_VECTOR(21 DOWNTO 0);signal num: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN
process(clk)----get 1 hz clock pulse begin
if clk'event and clk='1' then q<=q+1;end if;sec<=q(21);--get 1 hz clock pulse end process;
timing: process(sec)begin if sec'event and sec='1' then
if num<9 then num<=num+1;else num<=“0000”;end if;end if;end process;
B1: block--bcd-7segs Begin--gfedcba
seg<= “0111111” when num=0 else “0000110” when num=1 else “1011011” when num=2 else “1001111” when num=3 else “1100110” when num=4 else “1101101” when num=5 else “1111101” when num=6 else “0000111” when num=7 else “1111111” when num=8 else “1101111” when num=9 else
“0000000”;end block;END a1;
10@4MHz到1Hz的分频器
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count IS
PORT(clk: in STD_LOGIC;q: out STD_LOGIC;END count;
ARCHITECTURE a OF count IS
signal tmp: STD_LOGIC_vector(21 downto 0);Begin
process(clk)begin
if clk'event and clk='1' then tmp<=tmp+1;end if;end process;q<=tmp(21);END a;
11@与门
ENTITY shili2 is port(input1 : in std_logic;inptu2 : in std_logic;output1 : out std_logic);
end entity;
architecture one of shili2 is begin
output1<=input1 and input2;end entity;
12@.四输入与门电路
library ieee;use ieee.std_logic_1164.all;
entity and4 is port(a,b,c,d:in std_logic;y:out std_logic;end and4;
architecture and4_1 of and4 is begin y<= a and b and c and d;end nand4_1;
法二(与非门):
library ieee;
use ieee.std_logic_1164.all entity nand4 is
port(a.b,c,d:in std_logic;y:out std_logic);end nand4;
architecture nand4_2 of nand4 si begin
p1:process(a,b,c,d)variable
tmp:std_logic_vector(3 downto 0);begin tmp:=a&b&c&d;case tmp is when“0000”=>y<='1';when“0001”=>y<='1';when“0010”=>y<='1';when“0011”=>y<='1';when“0100”=>y<='1';when“0101”=>y<='1';when“0110”=>y<='1';when“0111”=>y<='1';when“1000”=>y<='1';when“1001”=>y<='1';when“1010”=>y<='1';when“1011”=>y<='1';when“1100”=>y<='1';when“1101”=>y<='1';when“1110”=>y<='1';when“1111”=>y<='1';when others=>y<='x';end case;end process;end nand4_2;
13@四位全加器
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity add is port(a,b:in std_logic_vector(3 downto 0);cin:in std_logic;s:out std_logic_vector(3 downto 0);cout:out std_logic);end add;
architecture beh of add is begin process(a,b,cin)ariable x:std_logic_vector(3 downto 0);variable m,n,l:integer;begin m:=conv_integer(a);n:=conv_integer(b);l:=m+n+conv_integer(cin);x:=conv_std_logic_vector(l,4);s<=x(3 downto 0);cout<=x(3);end process;end beh;14@N位移位寄存器:page70 15@8位通用寄存器:page137 16@串入串出移位寄存器:page138 17@10位计数器
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS PORT(CLK ,clr : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY CNT10;ARCHITECTURE ONE OF CNT10 IS BEGIN PROCESS(CLK , clr)VARIABLE LCQ : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN IF RST = ‘1’ THEN LCQ := “0000”;ELSIF CLK’EVENT AND CLK = ‘1’ THEN IF LCQ < 9 THEN LCQ := LCQ + 1;ELSE LCQ := “0000”;END IF;END IF;CQ <= LCQ;END PROCESS;END ARCHITECTURE ONE;18@八位串行二进制全加器
use ieee.std_logic_1164.all;entity product_adder_subtracter is port(a,b:in std_logic_vector(7 downto 0);s:out std_logic_vector(8 downto 0));end;architecture behavioral of product_adder_subtracter is begin behavior:process(a,b)is variable carry_in:std_logic;variable carry_out:std_logic;variable op2:std_logic_vector(b'range);begin op2:=b;end if;for index in 0 to 7 loop carry_in:=carry_out;s(index)<=a(index)xor op2(index)xor carry_in;carry_out:=(a(index)and op2(index))or(carry_in and(a(index)xor op2(index)));end loop;s(8)<=a(7)xor op2(7)xor carry_out;end process;end;
EDA知识要点:1、2、3、4、5、目前流行的HDL语言有那些?; 什么是ASIC。
VHDL是由什么机构制定并公布的。VHDL的两大类基本描述语句是什么。
MAX+PLUSⅡ平台上,原理图、仿真波形文件、VHDL文件的扩展名 是什么?6、7、8、9、结构体常见的功能语句有那些? 子程序分为那两类,其结构为什么。信号与变量的赋值有何区别?。可编程器件分为哪些类?
10、VHDL中常见的库有那些?。
11、不完整的条件语句与完整的条件语句生成的电路有何区别
12、VHDL的标识符由什么构成。
13、VHDL中预定义数据类型有那些?。
14、CASE语句使用当中的注意事项。
15、目前国际上较大的PLD器件制造公司有那几家公司。
16、VHDL数据对象有什么
17、赋值语句分哪些类,分别写出一句赋值语句。
18、实现时序电路和逻辑组合电路分别用什么语句实现,分别写出他们的一般表式。
19、简述元件例化语句组成及语句格式。
20、数据对象有哪些种,分别写出定义这些数据对象的一般表述格式。
21、简述进程语句的使用要点?
22、写出VHDL常用的顺序语句的名称。
23、简述VHDL逻辑操作符的种类及所允许的操作数的数据类型。
24、EDA技术的含义。
25、VHDL语言中的逻辑操作符有那些?
26、目前较流行的集成EDA开发环境(软件)有那些?
27、简述EDA技术的CPLD/FPGA的设计流程。
28、写出实体中的PORT语句结构并说明其作用。
29、简述EDA技术经历了那几个发展阶段。30、写出元件例化语句语句格式,并说明其作用。
31、试比较图形输入法和文本输入法有何优缺点?
32、结构体的语言格式与作用。
33、写出PROCESS语句结构的一般表达格式?
34、EDA技术常用的输入方法有?
35、什么是实体和结构体,其功能是什么?,36、MAX+pulsⅡ的编辑窗口有那几种,分别是什么?
37、MAX+pulsⅡ的原理图输入法、文本输入法、波形输入法生成的文件扩展名为?
38、VHDL的操作符有那几大类?每一类的操作符分别是什么?每一类操作符可以对那些数据进行操作(运算)?
39、VHDL中如没有特别的说明算术操作符‘ + ’号对应的操作数为什么类型
40、可编程器件(PLD)分为哪两类
41、标准逻辑位数据类型常用的数值有哪几种?
42、在VHDL语言中常见的的数据类型有那些?
43、完整的条件语句将产生什么电路,不完整的条件语句将产生什么电路。
44、信号和变量有什么区别?
45、VHDL作为工业标准,是由那个机构制定并公布的。
46、实体部分的端口模式有四个类型。
47、从执行方式看VHDL的基本描述语句包括哪两大基本描述语句?
48、VHDL文件存盘时,其主文件名应与实体名一致,扩展名应为什呢
49、硬件描述语言(HDL)的种类很多?
50、简述元件例化语句的语句格式及关联方法。
EDA综合设计设计题
1、用两种以上的按照下图设计一个四选一多路选择器
2、使用元件例化语句编写下图所示的顶层文件,其中adder_1为一个由原理图输入法设计的完整的设计实体。
3、已知4位全加器电路原理图如下,请用元件例化语句编写其程序。
4、用VHDL语言编写下图所示的七段显示译码器。
D0D1D2D3七段译码器a(X6)b(X5)c(X4)d(X3)e(X2)f(X1)g(X0)七段数码管afedgbc5、用VHDL设计一个三位十进制的,带有使能控制端口enable、异步清零端口rst、同步预置控制端口load和预置数据输入端口date的计数器。
6、编写一个D触发器的硬件描述语言程序,要求实现上升沿触发。
7、使用IF语句设计一个带有异步复位和置位、同步预置的4位2
进制加法计数器。
U0dind0DclkclkQd1DU1Qclkd2DU2Qclkd3DU3Qclkd4dout