FPGA习题答案要点.docx
- 文档编号:4460454
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:15
- 大小:98.52KB
FPGA习题答案要点.docx
《FPGA习题答案要点.docx》由会员分享,可在线阅读,更多相关《FPGA习题答案要点.docx(15页珍藏版)》请在冰豆网上搜索。
FPGA习题答案要点
FPGA/CPLD应用技术(Verilog语言版)
第一章认识数字系统设计开发环境:
一、填空题
1.
(1)11001,19
(2)45,2D
(3)111111,63
2.建立工程;输入设计;编译工程;设计仿真;器件编程
3.Altera
4.
可编程只读存储器PROM(ProgrammableReadOnlyMemory)
可编程逻辑阵列PLA(ProgrammableLogicArray)
可编程阵列逻辑PAL(ProgrammableArrayLogic)
通用阵列逻辑器件GAL(GenericArrayLogic)
可擦除可编程逻辑器件EPLD(ErasableProgrammableLogicDevice)
复杂可编程逻辑器件CPLD(ComplexProgrammableLogicDevice)
现场可编程门阵列FPGA(FieldProgrammableGateArray)
5.低密度可编程逻辑器件(LDPLD)、高密度可编程逻辑器件(HDPLD)
6.“与或阵列”、“门阵列”、“与或阵列”
7.输入电路、与阵列、或阵列、输出电路
8.可编程功能单元、可编程I/O引脚、可编程布线资源和片内存储块RAM
9.电子设计自动化、ElectronicDesignAutomatic
10.硬件描述语言、HardwareDescriptionLanguage
11.
ProgrammableReadOnlyMemory
ProgrammableLogicArray可编程逻辑阵列
ProgrammableArrayLogic可编程阵列逻辑
GenericArrayLogic通用阵列逻辑器件
ErasableProgrammableLogicDevice可擦除可编程逻辑器件
ComplexProgrammableLogicDevice复杂可编程逻辑器件
FieldProgrammableGateArray现场可编程门阵列
Very-High-SpeedHardwareDescriptionLanguage超高速硬件描述语言
InSystemProgramming在系统可编程
Look-UpTable查找表
ProgrammableLogicDevice可编程逻辑器件
LogicArrayBlocks逻辑阵列块
ComputerAidedDesign计算机辅助设计技术CAD
12.写出下列英文单词的中文意思。
(1)工程、项目
(2)向导
(3)器件(4)封装
(5)管脚(6)系列
(7)原理图(8)图表
(9)块(10)符号
(11)输入(12)输出
(13)编译(14)信息
(15)分析(16)综合
(17)装配、布局(18)汇编、装配
(19)报告(20)波形
(21)节点(22)仿真器
(23)功能的(24)时序的
(25)分配(26)熔丝
(27)互连(28)宏单元
(29)乘积项(30)进位
二、问答题
1.画出QuartusII软件的完整设计流程。
答案:
如图T1.1所示。
图T1.1QuartusII软件的完整设计流程
2.
答案:
共包括以下5步:
①建立工程;②输入设计;③编译工程;④设计仿真;⑤器件编程,任务实现基本流程如图T1.2所示。
图T1.2设计步骤
3.
答案:
如图T1.3
图T1.3可编程逻辑器件的分类
4.画出4选1数据选择器的输入输出结构及真值表。
答案:
如图T1.4和表T1.1所示。
图T1.44选1数据选择器
表T1.14选1数据选择器真值表
控制选择端
输出
S1S0
F
00
01
10
11
P0
P1
P2
P3
5.简述FPGA的一般设计流程。
答案:
FPGA/CPLD进行电路设计的过程是指在计算机上利用EDA工具软件对FPGA/CPLD器件进行开发设计的过程,一般包括设计准备、设计输入、功能仿真、设计实现、时序仿真、下载编程和器件测试七个步骤。
(1)设计准备
设计准备阶段是FPGA/CPLD进行电路设计的第一步,包括方案论证、系统设计、器件选择等工作。
(2)设计输入
设计输入阶段就是设计者将设计电路以某种方式输入到计算机中。
设计输入通常有以下几种方式:
原理图输入方式、HDL硬件描述语言输入方式、波形输入方式、层次设计输入方式、状态机图表输入方式等,前两种是比较常用的输入方式,下面分别简单介绍。
原理图输入方式与传统的原理图设计类似,用最直接的图形化的方式描述设计电路,使用工具软件提供的元件库中的符号,用连线画出原理图。
这种输入方式是大家最习惯的方式,直观简单,便于仿真,但原理图设计效率低,对设计人员要求高。
HDL硬件描述语言输入方式是用文本方式输入设计电路,是EDA设计的基本特征之一。
目前常用的硬件描述语言有VHDL(VeryHighspeedDescriptionLanguage)、Verilog-HDL等。
因为语言与工艺无关,采用这种方式输入设计电路,设计人员对底层电路和PLD结构不必太熟悉,而且便于实现大规模系统的设计;缺点是硬件描述语言必须依赖综合器,综合器的好坏直接影响到生成电路的质量。
(1)功能仿真
功能仿真也称为前仿真。
在编译之前对设计的电路进行逻辑功能验证,初步检测电路功能是否正确。
仿真时首先要建立波形文件或测试向量,仿真结果一般是输出信号波形和报告文件等。
(2)设计实现
设计电路的逻辑功能验证正确后,可以进入电路的设计实现环节了。
设计实现是FPGA/CPLD进行电路设计的关键步骤,工具软件将对设计输入文件(原理图或文本等)进行逻辑化简、综合优化和适配,最后产生编程下载需要的编程文件。
(3)时序仿真
时序仿真一般称为后仿真,是把设计电路与具体实现器件(FPGA/CPLD)结合起来的仿真。
因为不同的器件内部延时不一样,不同的布局布线方案也会产生不同的延时。
因此,时序仿真是增加了延时信息后对设计电路的仿真,是仿真电路在器件中实现后,作为实际器件工作的情况。
(4)下载编程
下载编程是将设计实现阶段生成的编程文件装入到目标器件FPGA/CPLD中,也就是将设计电路在具体器件中实现。
(5)器件测试
器件测试就是指器件在编程实现后,可以用编译产生的文件对器件进行校验、加密等工作,当然,利用实验板对器件的性能进行现场测试也是十分必要的。
第二章Verilog设计基础
一、填空题
1.模块
2.module,endmodule
3.模块名字,模块输入输出端口列表
4.输入(input),输出(output),输入输出双向(inout)
5.分号
6.结构描述方式,行为描述方式,数据流描述方式
7.门级原语,已建立好的电路模块
8.wire连线型,reg寄存器型,memory存储器型
9.wire类型
10.reg类型
二、问答题
1.答案:
在实际电路系统中,经常会遇到总线,比如地址总线、数据总线等,它们具有多位数据线。
用Verilog来描述n位总线信号为wire型变量的格式如下:
wire[n-1:
0]信号名1,信号名2,……;
例如:
wire[7:
0]data;//说明一个8位数据总线data为wire型
用Verilog来描述n位总线信号为reg型变量的格式如下:
reg[n-1:
0]信号名1,信号名2,……;
例如:
reg[7:
0]a,b;//说明一个8位数据总线a和b为reg型
如果用Verilog来描述n位总线型的输入输出端口,则可以按如下格式定义:
input[n-1:
0]端口1,端口2,……;//说明端口1,端口2,…为n位输入端口
output[n-1:
0]端口1,端口2,……;//说明端口1,端口2,…为n位输出端口
inout[n-1:
0]端口1,端口2,……;//说明端口1,端口2,…为n位双向端口
例如:
input[3:
0]data;//说明一个4位的输入端口data
output[7:
0]q;//说明一个8位的输出端口q
inout[1:
0]OUT;//说明一个2位的双向端口OUT
2.答案
wire连线型相当于组合逻辑电路中的各种连接线,其特点是输出的值紧随输入值的变化而变化,不能暂存。
verilogHDL模块中的输入输出信号类型默认定义为wire型。
程序模块中引用实例元件的输出信号变量以及用“assign”语句赋值的变量,一般地都定义为wire型。
reg类型定义的是一种能暂存数据的变量,对应的是具有状态保持作用的电路元件,如触发器、寄存器等。
程序模块中需要在always过程语句中赋值的变量都须定义为reg型变量。
reg型变量与wire型变量的根本区别就在于:
reg型变量在定义时默认的初始值为不定值x,在设计时要求放在always过程语句内部通过过程赋值语句赋予明确的值。
如果寄存器变量没有得到新的赋值,它将一直保持原有的值不变。
3.答案
在电路建模过程中如果使用if条件语句,当分支条件表达式值已将控制表达式的所有可能取值都一一列出的话,则else语句项可以省略不写。
但如果没有列出所有可能出现的条件分支的话,在进行逻辑综合时编译器认为条件不满足从而引入一个触发器保持原值,在进行组合电路设计过程中,应避免这种触发器的存在。
为了保证包含所有的条件分支情况,通常是在if语句最后加上else语句将没有罗列出来的情况统统包含进来。
4.答案
一个case语句中只能有一个default语句项。
如果分支表达式值已将控制表达式的所有可能取值都一一列出的话,则default语句项可以省略不写。
但由于每一个变量至少有4种取值0、1、z和x,所以一般不可能列出所有的可能取值。
如果没有列出所有条件分支的话,在进行逻辑综合时编译器认为条件不满足从而引入一个触发器保持原值,在进行组合电路设计过程中,应避免这种触发器的存在。
为了保证包含所有的取值,通常都在case语句的最后加上default语句。
如果是用if条件语句建模的话,通常是在if语句最后加上else语句将没有罗列出来的取值统统包含进来。
5.答案
VerilogHDL支持采用自顶向下的结构化设计方法进行复杂电路系统设计。
将一个复杂的系统设计分割成许多较小的、较简单的功能单元模块,这些小模块与大系统相比,设计更容易、测试更简单。
对这些小模块分别进行设计和验证通过后,再调用这些小模块嵌套在更大的功能单元模块中进行设计和验证,最后组合为一个完整的电路系统。
在VerilogHDL的层次化设计中调用小单元模块的方法有两种:
一种是和调用门原语方法类似的位置映射法;一种是将例化模块的端口名对应信号名的信号映射法。
用位置映射法引用一个模块,需要先在引用语句前面写上这个模块的名字,然后在一个空格后写上此模块引用的实例名,在其后圆括号内按模块端口顺序写上连接到各个端口的信号线名。
其引用的语法如下:
模块名实例名(连接端口1的信号名,连接端口2的信号名,…);
用信号映射法引用一个模块,不必严格遵守端口顺序,只需将所调用的模块端口逐一对应到信号线上列出。
信号映射法引用模块的语法如下:
模块名实例名
(
.端口名1(连接端口1的信号名),
.端口名2(连接端口2的信号名),
…
);
三、操作题
1.
(1)结构描述方式
modulecircuit1(
A,
B,
C,
D,
F
);
inputA,B,C,D;
outputF;
nand(W1,A,B);
and(W2,B,C,D);
or(F,W1,W2);
endmodule
(2)数据流描述方式
modulecircuit2(
A,
B,
C,
D,
F
);
inputA,B,C,D;
outputF;
assignF=(~(A&B))|(B&C&D);
endmodule
(3)行为描述方式
modulecircuit1(
A,
B,
C,
D,
F
);
inputA,B,C,D;
outputF;
regF;
always@(AorBorCorD)
begin
F=(~(A&B))|(B&C&D);
end
endmodule
2.moduletri_circuit(
IN,
E,
OUT
);
inputIN,E;
outputOUT;
assignOUT=E?
IN:
1’bz;//若E=1,则OUT=IN;若E=0,则OUT为高阻态
endmodule
3.module7segLED(
IN,
OUT,
);
input[3:
0]IN;
output[6:
0]OUT;
always@(IN)
begin
case(IN)
4’d0:
OUT=7’b1111110;
4’d1:
OUT=7’b0110000;
4’d2:
OUT=7’b1101101;
4’d3:
OUT=7’b1111001;
4’d4:
OUT=7’b0110011;
4’d5:
OUT=7’b1011011;
4’d6:
OUT=7’b1011111;
4’d7:
OUT=7’b1110000;
4’d8:
OUT=7’b1111111;
4’d9:
OUT=7’b1111011;
default:
OUT=7’bx;
endcase
end
endmodule
第三章组合逻辑电路
一、填空题
1.两;输入;reg;if-else;case。
2.always;initial。
3.并行;顺序执行。
4.reg;wire。
5.
(1)000100000001
(2)00010011
(3)01100110
(4)01000010
(5)01010110
(6)10000110
7.电路当前的输出仅取决于当前的输入信号,输出信号随输入信号的变化而改变,与电路原来的状态无关,这种电路无记忆功能。
8.=;<=。
9.共阴极;共阳极;静态显示;动态显示。
二、判断题
×√×√××√×√
三、问答题
1.
(1)4位;
(2)寄存器类型;(3)会错,a应该为wire类型变量;(4)4’b1001;(5)1’b0;(6)m=3’b10;
2.基于硬件描述语言的组合逻辑设计方法如下:
第一步,文字描述的逻辑命题,转换规格书。
首先,分析事件的因果关系,确定输入和输出变量。
一般总是把引起事件的原因定为输入变量,把事件引起的结果定为输出变量。
然后,定义逻辑状态的含义。
即确定0,1分别代表输入、输出变量的两种不同状态。
最后,画出电路的结构框图,并且定义好相关信号含义,写出电路规格书。
第二步,根据规格书的要求,用RTL的硬件描述语言描述电路(一般需要通过仿真验证)。
第三步,根据已有的库进行综合,得到可以与实际直接对应的网表并最终实现电路。
第4章时序逻辑电路设计
一、填空题
1.同步电路、异步电路
2.非阻塞赋值
3.全局时钟(同步时钟)
4.Mealy型状态机、Moore型状态机
5.有限状态机
6.Mealy、Moore
7.时钟沿
8.有限状态机、FiniteStateMachine。
二、简答题
1.
答案:
(1)在用VerilogHDL进行数字逻辑设计时,只使用一个主时钟,同时只使用同一个时钟沿(上升沿或下降沿)。
(2)在FPGA设计中,推荐所有输入、输出信号均应通过寄存器寄存,寄存器接口当作异步接口考虑。
(3)当全部电路不能用同步电路思想设计时,即需要多个时钟来实现,则可以将全部电路分成若干局部电路(尽量以同一时钟为一个模块),局部电路之间接口当异步接口考虑。
(4)电路中所有的寄存器、状态机在上电复位时必须有一个确定的初始态。
(5)电路的实际最高频率不应大于理论最高频率,应留有设计余地。
2.
答案:
异步复位是指在复位信号有效时,系统立即进行复位,而不管时钟信号的状态,在用VerilogHDL的always块描述异步复位时,always块中的敏感信号列表必须包括复位信号,如always@(posedgeclkorposedgereset)。
同步复位是指在复位信号和时钟信号同时有效时,系统才进行复位。
在用VerilogHDL的always块描述同步复位时,always块中的敏感信号列表不包含复位信号。
3.
答案:
触发器是时钟沿敏感的器件,而锁存器是电平敏感的器件,在项目设计中,锁存器会带来诸多问题,如额外延时,DFT问题等,因此,在实际设计中必须尽量避免锁存器的出现。
4.
答案:
RS触发器是一种危险的触发器,R=S=1会导致不稳定态,初始状态不确定。
在设计时尽量避免采用这种电路。
可编程逻辑器件一般选用D触发器来完成设计。
5.
答案:
图中加上虚线部分完整的框图表示的是Mealy型状态机,Mealy型状态机的输出不仅与当前状态有关,而且还与输入信号有关。
去掉图中的虚线部分则表示的是Moore型状态机,Moore型状态机仅仅与当前状态有关,而与输入信号没有直接关系。
6.
答案:
可以确保Mealy型和Moore型状态机输出没有“毛刺”,可以采用以下设计方法:
(1)对于Mealy型状态机设计,用时钟同步输出信号;
(2)对于Moore型状态机设计,用时钟同步输出信号;
(3)直接把状态机的状态作为输出信号。
7.
答案:
a)选择Mealy状态机还是Moore状态机
b)构造状态转换图
c)把状态转换图转换为VerilogHDL设计
8.
答案:
(1)组合逻辑输出状态机设计
状态机输出产生输出的逻辑和产生下一状态的逻辑通过一个组合逻辑块来实现。
这种设计有两个不利之处在于:
组合输出会在两个状态之间形成毛刺,对状态的变化形成干扰;另外由于组合逻辑输出的时延,本来被状态机输出驱动的逻辑块的时钟将会更晚一步到达。
(2)寄存器输出状态机设计
与第一种设计方法相比,由时钟同步寄存器输出可以有效消除输出信号的毛刺。
并且这种设计方法对于电路综合非常有利,它有效的遏制了由于组合逻辑的恶劣延时而给电路带来的时延问题。
但是这种设计方法多用了两个寄存器,使综合电路面积增大,同时要求在作逻辑分析时要格外小心,因为这种设计的“下一个输出”由当前态和输入共同决定。
(3)One-hot编码输出状态机设计
将输出逻辑通过One-Hot编码的方式和当前状态寄存器融合在一起。
输出信号未经过额外的逻辑对现态进行译码,而是直接来自状态寄存器,因而输出信号不会产生毛刺,同时减少了直接输出的逻辑,使电路综合面积更小。
三、应用题
答案(略)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 习题 答案 要点