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连线型相当于组合逻辑电路中的各种连接线,其特点是输出的值紧随输入值的变化而变化,不能暂存。verilog HDL模块中的输入输出信号类型默认定义为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.答案
Verilog HDL支持采用自顶向下的结构化设计方法进行复杂电路系统设计。将一个复杂的系统设计分割成许多较小的、较简单的功能单元模块,这些小模块与大系统相比,设计更容易、测试更简单。对这些小模块分别进行设计和验证通过后,再调用这些小模块嵌套在更大的功能单元模块中进行设计和验证,最后组合为一个完整的电路系统。
在Verilog HDL的层次化设计中调用小单元模块的方法有两种:一种是和调用门原语方法类似的位置映射法;一种是将例化模块的端口名对应信号名的信号映射法。
用位置映射法引用一个模块,需要先在引用语句前面写上这个模块的名字,然后在一个空格后写上此模块引用的实例名,在其后圆括号内按模块端口顺序写上连接到各个端口的信号线名。其引用的语法如下:
模块名 实例名(连接端口1的信号名, 连接端口2的信号名,?);
用信号映射法引用一个模块,不必严格遵守端口顺序,只需将所调用的模块端口逐一对应到信号线上列出。信号映射法引用模块的语法如下:
模块名 实例名
(
.端口名1(连接端口1的信号名), .端口名2(连接端口2的信号名), ?
);
三、操作题
1.(1)结构描述方式 module circuit1( A, B, C, D, F );
input A,B,C,D; output F; nand(W1,A,B); and(W2,B,C,D); or(F,W1,W2); endmodule
(2)数据流描述方式 module circuit2( A, B, C, D, F );
input A,B,C,D; output F;
assign F=(~(A&B))|(B&C&D); endmodule (3)行为描述方式 module circuit1( A, B, C, D, F );
input A,B,C,D; output F; reg F;
always @(A or B or C or D) begin
F=(~(A&B))|(B&C&D); end
endmodule
2. module tri_circuit( IN, E, OUT );
input IN,E; output OUT;
assign OUT=E?IN:1’bz; //若E=1,则OUT=IN;若E=0,则OUT为高阻态 endmodule
3. module 7segLED( 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)0001 0000 0001
(2)0001 0011 (3)0110 0110 (4)0100 0010 (5)0101 0110 (6)1000 0110
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. 有限状态机、Finite State Machine。
二、简答题
1.
答案:
(1)在用Verilog HDL进行数字逻辑设计时,只使用一个主时钟,同时只使用同一个时钟沿(上升沿或下降沿)。
(2)在FPGA设计中,推荐所有输入、输出信号均应通过寄存器寄存,寄存器接口当作异步接口考虑。
(3)当全部电路不能用同步电路思想设计时,即需要多个时钟来实现,则可以将全部电