1、FPGA结构一般分为三部分:可编程逻辑块(CLB)、可编程I/O模块和可编程内部连线。
2 CPLD的内部连线为连续式布线互连结构,任意一对输入、输出端之间的延时是固定 ;FPGA的内部连线为分段式布线互连结构,各功能单元间的延时不定(不可预测)。
3 大规模可编程器件主要有CPLD和FPGA两类,其中CPLD通过可编程乘积项逻辑实现其逻辑功能。 基于SRAM的FPGA器件,每次上电后必须进行一次配置。FPGA内部阵列的配置一般采用在电路可重构技术,编程数据保存在静态存储器(SRAM) ,掉电易失。
4 目前世界上有十几家生产CPLD/FPGA的公司,最大的两家是:Altera,Xilinx。
5 硬件描述语言(HDL)是EDA技术的重要组成部分,是电子系统硬件行为描述、结构描述、数据流描述的语言,它的种类很多,如VHDL、Verilog HDL、 AHDL
6 WHEN_ELSE条件信号赋值语句 和 IF_ELSE顺序语句的异同
WHEN_ELSE条件信号赋值语句中无标点,只有最后有分号;必须成对出现;是并行语句,必须放在结构体中。
IF_ELSE顺序语句中有分号;是顺序语句,必须放在进程中
7 可编程逻辑器件设计输入有原理图输入、硬件描述语言输入和波形输入三种方式。
原理图输入方式是一种最直接的设计描述方式,
硬件描述语言的突出优点是:
* 语言与工艺的无关性;语言的公开可利用性,便于实现大规模系统的设计;
* 具有很强的逻辑描述和仿真功能,而且输入效率高,在不同的设计输入库之间的转换非常方便,用不着对底层的电路和PLD结构的熟悉。
波形设计输入适用于时序逻辑和有重复性的逻辑函数。
8 用VHDL/Veilog HDL语言开发可编程逻辑电路的完整流程:
文本编辑→功能仿真→逻辑综合→布局布线→时序仿真。
* 所谓综合,就是根据设计功能和实现该设计的约束条件(如面积、速度、功耗和成本等),将设计输入转换成满足要求的电路设计方案,该方案必须同时满足与其的功能和约束条件。综合的过程也是设计目标的优化过程,其目的是将多个模块化设计文件合并为一个网表文件,供布局布线使用,网表中包含了目标器件中的逻辑单元和互连的信息。
*布局布线就是根据设计者指定的约束条件(如面积、延时、时钟等)、目标器件的结构资源和工艺特性,以最优的方式对逻辑元件布局,并准确地实现元件间的互连,完成实现方案(网表)到使实际目标器件(FPGA或CPLD)的变换。
9 基于EDA软件的FPGA / CPLD设计流程为:
原理图/HDL文本输入→功能仿真→综合→适配→时序仿真→编程下载→硬件测试。
* 综合是EDA设计的关键步骤,综合就是将电路的高级语言转换成低级的,可与FPGA/CPLD相映射的功能网表文件。为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。
10 构成一个完整的VHDL语言程序的五个基本结构:
实体(ENTITY)、 结构体(ARCHITECURE)、 配置(CONFIGURATION) 、 库(LIBRARY) 、 程序包 (PACKAGE) 。
*实体的由实体说明和结构体两部分组成。实体说明部分用于描述所设计系统的外部端口信号和参数的属性和设置,而结构体部分则定义了设计单元的具体功能、行为、数据流程或内部结构。
*结构体的三种描述方式,即行为级描述、数据流级描述和结构级描述。
结构体通常由结构体名称、定义语句和并行处理语句构成,
*程序包用于存放各设计模块能共享的数据类型、常数、子程序等。
*库用于存放已编译的实体、结构体、程序包和配置,可以通过其目录进行查询和调用。在VHDL语言中,可以存在多个不同的库,但是库与库之间是独立的,不能互相嵌套。它可由用户生成或由ASIC芯片制造商提供,以便于在设计中为大家所共享。
常用库:(1)IEEE库
IEEE库主要包括std_logic_1164、numeric_bit、numeric_std等程序包,还有一些程序包非IEEE标准,但并入IEEE库,如std_logic_arich、std_logic_unsigned、std_logic_signed。
使用IEEE程序包,必须声明。
(2) std库
包含 standard textio程序包。Std库符合IEEE标准,应用中不必声明。
(3) work库
用户的VHDL设计先行工作库。
(4) vital 库
包含时序程序包vital_timing和vital_primitives。设计开发过程通常不用
每个设计实体都必须有各自完整的库说明语句和use语句。Use语句的使用将使说明的程序包对本设计实体部分全部开放,即是可视的。
11 VHDL的数据对象包括常量(constant)、 变量(varuable) 和 信号(signal) ,它们是用来存放各种类型数据的容器。
12 在VHDL的端口声明语句中,端口方向包括 in 、out 、buffer 、inout、linkage
“BUFFER”为缓冲端口,与OUT类似,只是缓冲端口允许实体内部使用该端口信号,它可以用于输出,也可以用于端口信号的反馈。当一个结构体用“BUFFER”说明输出端口时,与其连接的另一个结构体的端口也要用BUFFER说明。
以“LINKAGE”定义的端口不指定方向,无论哪个方向的信号都可以连接。
13 VHDL的PROCESS(进程)语句是由顺序语句 组成的,但其本身却是并行语句 。
14 VHDL的子程序有 过程(PROCEDURE) 和 函数(FUNCTION) 两种类型,具有可重载性特点。
15 图形文件的扩展名是 .bdf ;矢量波形文件的扩展名是 .vwf ;使用VHDL语言,文本设计文件的扩展名是 .vhd ;自建元件图形符号文件的扩展名.bsf;资源分配说明文件扩展名.qsf,用文本打开它可以修改引脚编号;逻辑综合会生成.edf文件;双击.qpf文件可启动QuartusII并打开已有工程。
16 图形编辑中模块间的连线有三种形式: 节点线 、总线和管道线
17 Quartus编译器编译FPGA工程最终生产两种不同用途的文件,它们分别是.sof和.pof。sof是SRAM Object File,下载到FPGA中,断电丢失。
pof是Programmer Object File,下载到配置芯片中,上电重新配置FPGA
18 FPGA过程中的仿真有三种:行为仿真、逻辑仿真、时序仿真。
19 IP核在EDA技术和开发中占有很重要的地位,提供VHDL硬件描述语言功能块,但不涉及实现该功能模块的具体电路的IP核为软件IP。
二 名词解释,写出下列缩写的中文(或者英文)含义:
1. FPGA Field-Programmable Gate Array 现场可编程门阵列
2 VHDL-- Very-High-Speed Integrated Circuit Hardware Description Language) 甚高速集成电路硬件描述语言
3 HDL Hardware Description Language硬件描述语言
4 EDA Electronic Design Automation 电子设计自动化
5 CPLD Complex Programmable Logic Device复杂可编程逻辑器件
6 PLD Programmable Logic Device 可编程逻辑器件
7 GAL, generic array logic通用阵列逻辑
8. LAB Logic Array Block逻辑阵列块
9. CLB Configurable Logic Block 可配置逻辑模块
10 EAB Embedded Array Block 嵌入式阵列块
11 SOPC System-on-a-Programmable-Chip 可编程片上系统
12. LUT Look-Up Table 查找表
13. JTAG Joint Test Action Group 联合测试行为组织
14. IP Intellectual Property 知识产权
15 ASIC Application Specific Integrated Circuits 专用集成电路
16 ISP In System Programmable 在系统可编程
17 ICR In Circuit Re-config 在电路可重构
18 RTL Register Transfer Level 寄存器传输级
选择:
1. 基于VHDL设计的仿真包括有①门级时序仿真、②行为仿真、③功能仿真和④前端功能仿真这四种,按照自顶向下的设计流程,其先后顺序应该是:______D___
A.①②③④ B.②①④③ C.④③②① D.②④③①
2. 执行Quartus II的 B 命令,可以检查设计电路错误。
A Create Default Symbol B Compiler----编译
C Simulator ----时序仿真 D Timing Analyzer ---时序分析
3. 在设计输入完成后,应立即对设计文件进行( C )。
A编辑 B 编译 C 功能仿真 D时序仿真
4. 在VHDL中用( C )来把特定的结构体关联一个确定的实体,为一个大型系统的设计提供管理和进行工程组织。
A输入 B 输出 C综合 D配置
5 电子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化),下列方法 A 不属于面积优化。
A 流水线设计 B 资源共享 C 逻辑优化 D 串行化
6 不完整地IF语句,其综合结果可实现
A 时序逻辑电路 B 组合逻辑电路 C 双向电路 D 三态控制电路
7. 下面对利用原理图输入设计方法进行数字电路系统设计,那一种说法是不正确的______。
A. 原理图输入设计方法直观便捷,但不适合完成较大规模的电路系统设计;
B. 原理图输入设计方法一般是一种自底向上的设计方法;
C. 原理图输入设计方法无法对电路进行功能描述;
D. 原理图输入设计方法也可进行层次化设计。
8. 在VHDL语言中,下列对进程(PROCESS)语句的语句结构及语法规则的描述中,不正确的是___C____。
A. PROCESS为一无限循环语句;敏感信号发生更新时启动进程,执行完成后,等待下一次进程启动。
B. 敏感信号参数表中,不一定要列出进程中使用的所有输入信号;
C. 进程由说明部分、结构体部分、和敏感信号三部分组成;
D. 当前进程中声明的变量不可用于其他进程
9 IP核在EDA技术和开发中占有很重要的地位,提供VHDL硬件描述语言功能块,但不涉及实现该功能模块的具体电路的IP核为 C
A 硬件IP B 固件IP C 软件IP D 都不是
10 综合是EDA设计的关键步骤,下面对综合的描述中错误的是
A 综合就是把抽象设计中的一种表示转换成另一种表示的过程。
B 综合就是将电路的高级语言转换成低级的,可与FPGA/CPLD相映射的功能网表文件。
C 为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。
D 综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果是唯一的。
11 大规模可编程器件主要有CPLD和FPGA两类,下面对FPGA结构与工作原理描述中,正确的是 C
A FPGA全称为复杂可编程逻辑器件
B FPGA是基于乘积项结构的可编程逻辑器件。
C 基于SRAM的FPGA器件,每次上电后必须进行一次配置。
D 在Altera公司生产的器件中,MAX7000系列属于FPGA结构
12 大规模可编程器件主要有CPLD和FPGA两类,其中CPLD通过 A 实现其逻辑功能。
A 可编程乘积项逻辑; B 查找表(LUT) C 输入缓冲 D 输出缓冲
13 进程中的信号赋值语句,其信号更新是 C
A 按顺序完成 B比变量更快完成 C 在进程最后完成 D 都不对
14 VHDL语言是一种结构化的语言,一个设计实体(电路模块)包括实体说明与结构体两部分,结构体描述 B
A 器件的外部特性 B 器件的内部功能
C 器件的综合约束 D 器件外部特性与内部功能
15 关于VHDL的数字,请找出以下数字中最大的一个
A 2#1111_1110# B 8#276# C 10#170# D 16#E#E1
判断下列标识符书写是否合法
Architecture \architecture\ add2-1 add2_1
2_009 2,009 2.009e3 2.009 E3
VHDL语言的短标识符遵循以下命名规则:
* 短标识符必须以英文字母开头;
* 短标识符由26个字母(A~Z,a~z)、数字(0~9)和下划线“_”字符组成;
* 下划线“_”的前后都必须有英文字母或者数字;
* 短标识符不区分大小写;
如:EDA、Eda、eda均为相同的命名。
VHDL语言的扩展标识符遵循以下命名规则:
* 扩展标识符用反斜杠来分隔;如:\adde\,\begin-add\等。
* 扩展标识符允许包含图形符号及空格等;如:\counter & adder\,\entity%end\
* 扩展标识符的两个反斜杠之间可以用保留字;如:\entity\,\architecture\等。
* 扩展标识符的两个反斜杠之间可以用数字开头;如:\ l adder\,\44counter\等。
* 扩展标识符中允许多个下划线相连;如:\adder.es__ counter\等。
* 同名的扩展标识符和短标识符不表示同一名称;如:\adder\和adder不相同。
* 扩展标识符区分大小写字母;如:\EDA\和\eda\不相同。
* 扩展标识符中如果含有一个反斜杠,可以两个反斜杠来代替;
如:\adder\\counter\表示的扩展标识符名称为adder\countera
十进制数的定义格式为: 整数[.整数][指数]
其中整数可表示为"数字_数字",指数可表示为"E+(或-)整数",但只有十进制的实数才允许指数为负值。在相邻的数字之间插入下划线,对数值并无影响,而且允许在数字之前冠以若干个零,但是不允许在数字中存在空格或其它字符。
以基表示的数,格式: 基#基于基的整数[.基于基的整数]#指数
基是一个整数,其最小值是2,最大值是16。基于基的整数可表示为“扩展数字_扩展数字”,其中扩展数字为数字(或字母,如十六进制中的A、B、C、D、E、F,且大小写字母所表达的意义相同),插入下划线不会影响其数值大小。
2#111111_11# 等效于(2#11111111#),表示十进制数255
8#0037 等效于(8#377#),表示十进制数255 3×82+7×8+7
016#0Ff# 等效于(16#FF#),表示十进制数255=16×15+15
16#8F#E1 表示十进制数2288,即143×16=(16 ×8+15)×16
2#1.1111_01#e8 表示十进制数500=(1+2-1+2-2+2-3+2-4+2-6) ×28
16#0.E#E0 表示十进制数0.875 =(16×0+14×16-1) ×160
位串用于表示位矢量,格式为: 基数说明符“数字字符串”
其中的基数说明符包括B、O和X,
B表示二进制数,O表示八进制数,X表示十六进制数。
B“10101111”,O“375”,X“89AC”,
数位字符串实际是位矢量,只有2,8,16进制,默认为B,
用于对一维位矢量的赋值,8每数占3位,16每数占4位
逻辑运算符的左边和右边以及代入的信号的数据类型必须是相同的,否则编译时会给出出错警告。当一个语句中存在两个以上的逻辑表达式时,在VHDL语言中,左右没有优先级差别。X<=(a AND b) OR c;若去掉式中的括号,则从语法上来说是错误的。不过,如果一个逻辑表达式中只有一种逻辑运算符,那么改变运算的顺序不会导致逻辑的改变,此时括号就可以省略掉。例如:
a<=b OR c OR d OR e;
a<=b AND c AND d AND e --对应的逻辑表达式为a=b·c·d·e
a<=b OR c OR d OR e --对应的逻辑表达式为a=b+c+d+e
a<= (b OR c) AND (d OR e) --对应的逻辑表达式为a= (b+c)·(d+e)
在进行关系运算时,左右两边的操作数的类型必须相同,但是位长度不一定相同。在利用关系运算符对位矢量数据进行比较时,比较过程是从最左边的位开始,自左至右按位进行比较的。在位长不同的情况下,只能按自左至右的比较结果作为关系运算的结果。
关系运算符中的小于等于运算符“<=”与信号赋值时的符号“<=”是相同的。在阅读程序时,应按照上下文关系来判断此符号到底是关系运算符还是代入符。
移位运算:
SLL是将位向量左移,右边移空位补零;SLA是将位向量左移,右边第一位的数值保持原值不变;SRL是将位向量右移,左边移空位补零;SRA是将位向量右移,左边第一位的数值保持原值不变。ROR和ROL是自循环移位方式。
A<= "1001";
B<=A SLL 1; 逻辑左移B=0010
C<=A SRL 1; 逻辑右移C=0100
D<=A SLA 1; 算术左移 D=0011
E<=A SRA 1; 算术右移 E=1100
F<=A ROL 1; 循环左移 F=0011
G<=A ROR 1; 循环右移 G=1100
VHDL的数据对象有三种类型:常量(constant)、 变量(varuable) 和信号(signal)它们是用来存放各种类型数据的容器。
* 常量。全局量 CONSTANT 常量名: 数据类型: = 表达式;
CONSTANT DELAY : TIME : = 50 ns;
Constant fbt: std_logic_vector:= “010110” ;
* 变量。局部量,在进程说明、过程说明和函数调用说明中使用。
变量说明语句的一般格式为:
VARIABLE 变量名: 数据类型 约束条件: = 表达式;
VARIABLE num : INTEGER RANGE 0 TO 127 : = 20;
变量赋值语句的格式:[变量名] : = [表达式];
对变量的赋值是立即生效的
* 信号。全局量
信号说明语句的格式:SIGNAL 信号名: 数据类型 约束条件: = 表达式;
SINGNAL gnd : BIT : = '0';
信号赋值语句的格式:[信号名] <= [表达式] [AFTER[时间表达式]];
D1<=D2 AFTER 15 ns;
信号与变量的区别:
正在上传…重新上传取消
信号赋值语句在进程外作为并行语句,并发执行,与语句所处的位置无关。变赋值语句在进程内或子程序内作为顺序语句,按顺序执行,与语句所处的位置有关。
信号赋值符号为 <=,变量赋值符号位 := 。信号赋值符号用于信号赋值动作,不立即生效,变量赋值符号用于变量赋值动作,立即生效。
例如:已知start为STD_LOGIC类型信号,sum是INTEGER类型信号,判断下列程序段
PROCESS (start)
BEGIN
FOR I in 1 to 9 LOOP
Sum:=sum+i
END LOOP;
END PROCESS;
sum 是信号,赋值应该用<=
正在上传…重新上传取消
VHDL数据类型——枚举类型
IEEE1164标准中预定义了一个枚举类型type std_logic is(‘U’‘X’‘0’‘1’‘Z’‘W’‘L’‘H’‘-’) 注意这里的大小写。
如:已知AB 均为std_logic类型的信号,请判断下面的程序片段
A<=‘0’;B<=‘x’; 不定态符号应该由小写‘x’改为大写‘X’
根据VHDL源程序,画出所设计的电路原理图。给定原理图写程序
(1) LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL’
ENTITY HAD IS
PORT( a: IN STD_LOGIC;
b : IN STD_LOGIC;
c : OUT STD_LOGIC;
d : OUT STD_LOGIC;);
END ENTITY HAD;
ARCHITECTURE fh1OF HAD IS
BEGIN
c<=a NAND b;
d<=(a OR b) AND (a NAND b);
END ARCHITECTURE fh1;
(2)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY comp4 IS
PORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0);
y: OUT STD_LOGIC);
END comp4;
ARCHITECTURE structural OF comp4 IS
COMPONENT xnor2
PORT(in1,in2: IN STD_LOGIC;
out: OUT STD_LOGIC);
END COMPONENT;
COMPONENT and4
PORT(in1,in2,in3,in4: IN STD_LOGIC;
out: OUT STD_LOGIC);
END COMPONENT;
SIGNAL s: STD_LOGIC(0 TO 3);
BEGIN
u0: xnor2 PORT MAP(a(0), b(0), s(0));
u1: xnor2 PORT MAP(a(1), b(1), s(1));
u2: xnor2 PORT MAP(a(2), b(2), s(2));
u3: xnor2 PORT MAP(a(3), b(3), s(3));
u4: and4 PORT MAP(s(0), s(1), s(2), s(3), y);
END structural;