FPGA知识重点

更新时间:2023-11-10 18:29:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《硬件描述语言及FPGA设计》复习要点: 一、名词解释

⑴设计方法:自顶向下和自底向上,以自顶向下为主要设计。

综合:指的是将较高级抽象层次的设计描述自动转化外较低层次的描述过程。 1.EDA :电子设计自动化 2.HDL :硬件描述语言 SoC :系统芯片

4.ASIC :专用集成电路 5.PLD :可编程逻辑器件

6.CPLD :复杂可编程逻辑器件 7.FPGA : 现场可编程门阵列 8.LUT :查找表

9.JTAG :联合测试行动组 10.ISP : 在系统编程

11.IP核 :完成某种功能的设计模块

12.逻辑综合 : 将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图描述,依据给定的硬件结构和约束控制条件进行编译、优化和转换,最终获得门级电路甚至更底层的电路描述网表文件的过程。

13.设计输入 :将设计者所设计的电路以开发软件要求的某种形式表达出来,并输入到相应软件中的过程。 14.下载 :把适配后生成的编程文件装入到PLD器件中的过程 15.FSM: 有限状态机 16.UDP:用户自定义 17.NS:次态

18.OL:输出逻辑 二、填空

1.EDA就是以 计算机 为工作平台,以 为开发环境,以 者 为目标器件设计实现电路系统的一种技术。

2.在数字电路设计过程中, 综合 是将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。 3.通常,将对CPLD的下载称为 编程 ,对FPGA中的SRAM进行直接下载的方式称 配置 。 4.仿真时是否考虑硬件延时分类,可分为仿真和 时序 仿真。 5.IP核主要包括 硬核 、 固核 和 软核 。

6.当前最流行的并且成为IEEE标准的硬件描述语言包括 和 。 7.当前EDA设计中普遍采用的方法是: 自顶向下 。

8.PLD按照编程工艺和编程元件可以分为 、 、 用紫外线擦出、点编程方式的器件 、 EEPROM型 、 闪速存储器(Flash)型 和 采用静态存储器(SRAM)机构的器件 9.简单PLD包括 、 、和 四类。

10.PLD按不同的内部结构可分为基于 乘积项 结构的PLD器件和基于 结构的PLD器件,前者的典型代表是 CPLD ,后者的典型代是 SRAM 。 11.PLD的开发中常用的测试技术是: 技术。 12.FPGA器件主要有两类配置方式: 。 13.Cyclone 。

14.写出下图所示F0和F1的表达式:F0= 101?A0,F1= A1?A0?A1?A0 。

1.verilog程序都是由 模块构成的,每个verilog程序包括4个主要的部分,分别是 模块声明 、 端口定义 、 信号类型声明 、 逻辑功能描述 。

2. 端口是模块与外界连接和通信的信号线,有三种类型,分别是 输入端口 、 输出端口 、 输入/输出端口 。 3. always过程语句既可以用来描述 时序 电路,也可以描述 组合 电路。

4. always过程块列表中的敏感信号的表达方式有多种: 用 or 连接所有的敏感信号、可以用来区分或连接所有的敏感信号和 敏感信号表达式 。

5. 调用元件的格式是:< 门元件关键字 >< 例化门元件名 >( 输入 端口列表, 输出 端口列表) 。 6.用verilog描述电路需要注意的是:存盘的文件名与 Verilog模块名 一致,文件名的后缀是 .v 。 1. Verilog 程序由符号包括符串 、 注释 、 标示符 、 关键字 。

Verilog中的标识符可以是任意一组和组合,但标识符的第一个字符必须是 字母 或者 “-” 。 3. Verilog中的常量主要有如下3种类型:、

4.在整数的书写规则里, x(或z)在二进制中代表位x(或z),在八进制中代表x(或z),在十六进制中代表位x(或z),它代表的宽度取决于

5. 在和之间允许出现空格,除此之外不允许出现空格。 6. 当位宽与进制缺省时表示的是

7. 如果定义的位宽比实际的位数长,通常在其但如果数最左边一位为x(或z),那么就相应地在左边补。如果定义的位宽比实际的位数小, 截掉 。

8. 实数的表示方法有和 ,实数转换为整数的方法是五入 。 9.Verilog有四种基本的逻辑状态,分别是、、、

10. 向量的定义形式为: A=mybyte[6]是对向量A进行了赋值 ,B=mybyte[5:2]是对向量B进行了 域赋值 。用这两种形式赋值的时候应当注意应使等号左右两端的宽度 要一致 。

11. 存储器由一组寄存器构成的阵列, 用verilog定义存储器时,需定义存储器的 和 前者表示,后者则表示。

1.Verilog HDL支持三种描述方式来设计电路,分别是和 数据流描述 。 2. 能控制端 )。

1.根据输出信号的不同,状态机可以分为,前者的输出是 当前状态 和 当前输入 的函数,后者的输出是 输入 的函数。 2.在状态机的设计中主要包含三个对象为:、

3.在状态机的设计中,常用的状态编码方式有、编码 。 三、单选

1.下列标识符哪些是合法的?( B ) A.$ time B._date C.8sum D.mux#

2.下列哪些整数的书写是合法的?( B D )

A.′da30 B.′o721 C.4′d-4 D.8′b1100_1101_0011

3.如果网线型变量说明后未赋值,那么其缺省值为( D )。

A.0 B.1 C.x D.z

4.对于定义reg [7:0] mema [255:0],正确的赋值为( A )。

A.mema[5]=10 B.mema=8′d0 C.1′b1 D.mema[5][3:0]=4′d1

5.对于“a=4′b11001,b=4′bx110”,选出正确的运算结果( BC )。 A.a&b=0 B.a&&b=1 C.b&a=4′bx000 D.b&&a=4′bx000 6.已知“a=1′b1,b=3′b001”,那么{a,b}=( C )。 A.4′b0011 B.3′b001 C.4′b1001 D.3′b101 7.在verilog语言中,a=4′b1011,那么&a=( D )。 A.4′b1011 B.4′b1111 C.1′b1 D.1′b0

8、按操作符所带的操作数,操作符分类中不含的类型是( D ) A. 单目 B. 双目 C. 三目 D. 多目

1、以下对initial语句的说法中,错误的是___b___

A. 有敏感信号 B. 沿时间轴可重复执行 C. 可用于描述激励信号 D. 可用于对寄存器值 2.以下语句中不可被综合的语句是 c A、if-else B、always C、initial D、assign

3、在下列关联方式中不属于元件例化语句的是A、位置关联 B、端口名关联 C、混合关联 D、指定关联 4.时间尺度定义为`timescale 10ns/100ps,选择正确答案( c )。

A.时间精度为10ns B.时间单位为100ps C.时间精度为100ps D.时间精度不确定 5.在verilog中定义了宏名‵define sum a+b+c,下面宏名引用正确的是( B )。 A.out=sum+d B.out=′sum+d C.out=‵sum+d D.都正确

6.在下列程序中,always过程语句描述了一个带异步Nreset和Nset输入端的上 升沿触发器,从选项中找出括号内应该填入的正确答案。 always @ ( c ) if (!Nreset) Q<=0; else if (!Nset) Q<=1; else Q<=D;

A.posedge clk or negedge Nreset B.posedge clk or negedge Nset

C.posedge clk or negedge Nreset or negedge Nset D.negedge Nreset or negedge Nset 7.下列语句中,不属于并行语句的是( b )。

A.非阻塞赋值语句 B. assign语句 C.实例元件调用语句 D.case语句 8.在verilog中,下列那个语句不是分支语句( )。 A.if-else B.case C.casez D.repeat

9.下列敏感信号的表示属于边沿敏感型的是( a )

A.always@(posedge clk or posedge clr) B.always@(A or B) C.always@(posedge clk or clr) D.always @ (*) 10.以下不属于for循环语句的是( b ) A.for B.assign C.while D.repeat

1.在Verilog程序中可以通过哪些方式描述电路的结构?( ABCD )

A.门级结构描述 B.晶体管级结构描述 C.UDP D.不同模块间的调用 2.下列哪些Verilog的基本门级元件是多输入门(ABC) A. nand B. nor C. and D. not

3.针对Verilog HDL语言中的case语句说法不正确的是(B ) A.case语句表达式的取值可以超出语句下面列出的值的范围; B.语句各分支表达式允许同时满足case表达式的值; C.条件语句中的选择值需要完整覆盖表达式的取值范围; D.保险起见,case语句最后分枝最好都加上default语句。 4.以下针对过程语句的说法中不正确的是( C )

A.试图通过选择型列入过程语句的敏感信号列表来改变逻辑设计是无效的; B.一个模块中包含的多个过程语句本身都是并行的; C.任一过程引导的语句结构都是并行的;

D.只要过程语句的敏感信号发生变化,都将启动该过程。 5.关于摩尔型和米里型状态机说法不正确的是( D )。

A.米里型状态机的输出是在输入变化后发立刻生变化的,不依赖时钟信号的同步

B.摩尔型状态机的输入发生变化时还需要等待时钟的到来,必须等状态发生变化时才导致输出的变化 C.摩尔型状态机比米里型状态机要多等待一个时钟周期 D.米里型状态机比摩尔型状态机要多等待一个时钟周期 6.关于阻塞赋值和非阻塞赋值描述正确的是( D )。 A.设计时序电路时应尽量使用阻塞赋值方式 B.设计组合逻辑电路时建议使用阻塞赋值

C.可以在两个或者两个以上的always过程中对同一变量赋值 D. 对同一个变量可以既进行阻塞赋值,又进行非阻塞赋值 四、判断

1.assign引导的语句属于顺序语句。 (t )

2.assign语句主要用于描述组合逻辑电路。 ( t )

3.阻塞式赋值语句必须在块语句执行结束时在整体完成赋值操作。 ( f ) 4.元件例化语句为当前设计实体引入了低一级的设计层次。 (t )

5.Verilog中的不完整条件的if-else语句可能被综合出时序单元。 ( ? ) 6.过程中的阻塞赋值语句的先后顺序将直接影响最后的结果。 ( t) 7.一个过程中可以存在多个时钟信号作为时序。 (f ) 8.同一过程中可以存在多个if语句。 ( f ) 9.initial语句不可综合。 (t )

10. 在一个模块中,使用initial和always语句的次数是不受限制的。但是initial过程块中的语句仅执行一次;always块内的语句则是不断重复执行的。 ( t ) 四、简答

1、PLD的分类:按集成度分类分为简单PLD和高密度PLD。按不同的编程元件盒编程工艺划分①采用熔丝编程元件的器件②采用

反熔丝编程元件的器件③采用紫外线擦出、电编程方式的器件④EEPROM⑤闪速存储器⑥采用静态存储器结构器件。按结构特点分为基于乘

积项和基于查找表的结构的PLD器件;2、边界扫描测试技术;3、always过程语句敏感信号的表示;答:always@(*);4、并行语句有哪些;答:fork-join;5、initial语句的特点;答:不带触发条件,沿时间轴只执行一次;6、阻塞赋值和非阻塞赋值有的区别;答:①阻塞赋值赋值语句结束时即完成赋值操作理解为;7、画出基于FPGA/CPLD器件的数字

积项和基于查找表的结构的PLD器件 2、边界扫描测试技术

3、always过程语句敏感信号的表示 答:always @(*) 4、并行语句有哪些 答:fork-join

5、initial语句的特点

答:不带触发条件,沿时间轴只执行一次 6、阻塞赋值和非阻塞赋值有的区别 答:①阻塞赋值赋值语句结束时即完成赋值操作理解为顺序执行而非阻塞赋值赋值语句整个过程块结束时才完成赋值操作理解为并发执行。②阻塞赋值“=”非阻塞赋值“<=”(本质区别是非阻塞赋值语句右端表达式计算完后并不立即赋给左端,而是同时启动下一条语句继续执行,而阻塞赋值语句在每个右端表达式计算完后,立即赋给左端变量) 7、画出基于FPGA/CPLD器件的数字系统的设计流程并简述各环节作用。

①原理图输入是图形化的表述方式使用元件符号和连线来描述设计HDL文本是一种用文本形式来描述设计电路的语言②仿真是对所设计电路功能的验证

8、简述JTAG接口都有哪些功能。

答:TDI,TDO,TMS和TCK。TDI,TMS和TCK引脚在FPGA内部舍友弱上拉电阻(20~40k)。TDI引脚用于配置数据串行输入,数据在TCK的上升沿移入FPGA;TDO用于配置数据串行输出,数据在TCK的下降沿移出FPGA;TMS提供控制信号用于测试访问(TAP)端口

控制器的状态机转移;TCK则用于提供时钟。 9、什么是ToP-down设计方式?

答:自顶向下的设计。从系统设计入手,在顶层功能方框图划分和结构设计。在功能级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,其对应得物理实现可以是PLD器件或专门集成电路。 10、基于查找表的PLD的基本原理是什么?

答:PLD是一类实现逻辑功能的通用器件,他可以根据用户的需要构成不同功能的逻辑电路。 画出基于QuartusII 的EDA的开发流程,并简述各环节的作用。

11、下列程序中的语句是不完整的,根据下图所示的电路图将其补充完整。 reg FF1,FF2,FF3;

always @ (posedge clock) begin end

13、元件调用的方法有哪些?

答:调用Verilog内置门元件,调用开关级元件,在多层次结构电路设计中,高层次模块调用低层次模块。 14、定义如下的变量和常量:

(1)定义一个名为count的整数; integer count;

(2)定义一个名为ABUS的8位wire总线; wire [7:0] ABUS;

(3)定义一个名为address的16位reg型变量,并将该变量的值赋为十进制数128; Reg [15:0] address ;address=’d128;

(4)定义参数Delay_time, 参数值为8; Parameter Delay_time=8;

(5)定义一个名为DELAY的时间变量; Time DELAY;

(6)定义一个32位的寄存器MYREG; reg [31:0] MYREG;

(7)定义一个容量为128,字长为32位的存储器MYMEM; Reg [31:0]MYMEM[127:0]

15、画出下面程序段中r的仿真波形

Fork #20 r=1′b0;#10 r=1′b1;#15 r=1′b1;#25 r=1′b1;#5 r=1′b0; join 16、 always过程和initial过程的区别是什么?

答:always语句是并行执行initial语句只执行一次,而always块内的语句则是不断重要执行的可综合。Always带触发条件,initial不带触发条件。

17、流水线设计技术为什么能提高数字系统的工作频率?

答:在流水线设计技术中再长延时的逻辑功能块中插入触发器是复杂的逻辑操作分布完成,减少每个部分的延时,从而提高频率。 18、写出下面程序段的运行结果。 `timescale 10ns/1ns ?? fork

#20 r=1′b0;#10 r=1′b1;#15 r=1′b1;#25 r=1′b1;#5 r=1′b0;join initial $monitor($time,,,”r=%b”,r); Endmodule

答:0 r=x 20 r=0 30 r=1 45 r=1 70 r=1 75 r=0 19、任务和函数的区别。 答:

20、Verilog支持哪几种描述方式,各有什么特点?

答:结构描述、行为描述、数据流描述。结构描述是调用电路元件(比如逻辑门,甚至晶体管)来构建电路,行为描述则是通过描述电路的行为特性来设计电路,也可以采用上述方的混合来描述设计,数据流描述方式主要使用持续赋值语句,多用于描述组合逻

辑电路。

21、串行块和并行块的区别

答:①串行块语句begin-end是按串行方式顺序执行,并行块fork-jion中所有语句是并发执行的。②并行块中的延时都是相对与前一条的语句执行结束的相对时间,而并行模块中的延时是相对于该并行块的其实执行时间的。 五、编程

1、采用Verilog HDL语言状态机的三过程方式实现一个“1101”序列检测器,其中状态编码采用一位热码方式,复位信号高电平有效。(21分)

解:’define s0 4’b0001 ’define s1 4’b0010 ’define s2 4’b0100 ’define s3 4’b1000 ’define s4 4’b10000

Module fsm_seq1101_onehot(clk,clr,x,z);

Input clk,clr,x;output reg z;reg [3:0] state,next-state; Always @(posedge clk or posedge clr) Begin

If (clr) state<=’s0; Else state<=next_state; End

Always @(state or x) Begin

Case (state)

‘s0 begin if(x) next-state<=’s1; Else next_state<=’s0;end

‘s1 begin if(x) next-state<=’s0; Else next_state<=’s2;end

‘s2 begin if(x) next-state<=’s3; Else next_state<=’s0;end

‘s3 begin if(x) next-state<=’s4; Else next_state<=’s0;end Default:next_state<=’s0 End Case

Always @(state) Begin case(state) ‘s3: z=1’b1 Default: z=1’b0 Endcase End

endmodule

2、给下面一段程序注释(在每一条语句后面注释): module AAA (a,b);//模块定义

input [6:0] b;//定义7位输入端口b

output reg a;//定义输出端口是reg类型的a

reg [2:0] sum;//定义中间信号sum的数据类型为3位reg类型 integer i;//整形变量i always @ ( b )//敏感信号b begin

sum=0;//sum值清零 for (i=0

积项和基于查找表的结构的PLD器件;2、边界扫描测试技术;3、always过程语句敏感信号的表示;答:always@(*);4、并行语句有哪些;答:fork-join;5、initial语句的特点;答:不带触发条件,沿时间轴只执行一次;6、阻塞赋值和非阻塞赋值有的区别;答:①阻塞赋值赋值语句结束时即完成赋值操作理解为;7、画出基于FPGA/CPLD器件的数字

积项和基于查找表的结构的PLD器件 2、边界扫描测试技术

3、always过程语句敏感信号的表示 答:always @(*) 4、并行语句有哪些 答:fork-join

5、initial语句的特点

答:不带触发条件,沿时间轴只执行一次 6、阻塞赋值和非阻塞赋值有的区别 答:①阻塞赋值赋值语句结束时即完成赋值操作理解为顺序执行而非阻塞赋值赋值语句整个过程块结束时才完成赋值操作理解为并发执行。②阻塞赋值“=”非阻塞赋值“<=”(本质区别是非阻塞赋值语句右端表达式计算完后并不立即赋给左端,而是同时启动下一条语句继续执行,而阻塞赋值语句在每个右端表达式计算完后,立即赋给左端变量) 7、画出基于FPGA/CPLD器件的数字系统的设计流程并简述各环节作用。

①原理图输入是图形化的表述方式使用元件符号和连线来描述设计HDL文本是一种用文本形式来描述设计电路的语言②仿真是对所设计电路功能的验证

8、简述JTAG接口都有哪些功能。

答:TDI,TDO,TMS和TCK。TDI,TMS和TCK引脚在FPGA内部舍友弱上拉电阻(20~40k)。TDI引脚用于配置数据串行输入,数据在TCK的上升沿移入FPGA;TDO用于配置数据串行输出,数据在TCK的下降沿移出FPGA;TMS提供控制信号用于测试访问(TAP)端口

控制器的状态机转移;TCK则用于提供时钟。 9、什么是ToP-down设计方式?

答:自顶向下的设计。从系统设计入手,在顶层功能方框图划分和结构设计。在功能级进行仿真、纠错,并用硬件描述语言对高层

次的系统行为进行描述,然后用综合工具将设计转化为具体门电路网表,其对应得物理实现可以是PLD器件或专门集成电路。 10、基于查找表的PLD的基本原理是什么?

答:PLD是一类实现逻辑功能的通用器件,他可以根据用户的需要构成不同功能的逻辑电路。 画出基于QuartusII 的EDA的开发流程,并简述各环节的作用。

11、下列程序中的语句是不完整的,根据下图所示的电路图将其补充完整。 reg FF1,FF2,FF3;

always @ (posedge clock) begin end

13、元件调用的方法有哪些?

答:调用Verilog内置门元件,调用开关级元件,在多层次结构电路设计中,高层次模块调用低层次模块。 14、定义如下的变量和常量:

(1)定义一个名为count的整数; integer count;

(2)定义一个名为ABUS的8位wire总线; wire [7:0] ABUS;

(3)定义一个名为address的16位reg型变量,并将该变量的值赋为十进制数128; Reg [15:0] address ;address=’d128;

(4)定义参数Delay_time, 参数值为8; Parameter Delay_time=8;

(5)定义一个名为DELAY的时间变量; Time DELAY;

(6)定义一个32位的寄存器MYREG; reg [31:0] MYREG;

(7)定义一个容量为128,字长为32位的存储器MYMEM; Reg [31:0]MYMEM[127:0]

15、画出下面程序段中r的仿真波形

Fork #20 r=1′b0;#10 r=1′b1;#15 r=1′b1;#25 r=1′b1;#5 r=1′b0; join 16、 always过程和initial过程的区别是什么?

答:always语句是并行执行initial语句只执行一次,而always块内的语句则是不断重要执行的可综合。Always带触发条件,initial不带触发条件。

17、流水线设计技术为什么能提高数字系统的工作频率?

答:在流水线设计技术中再长延时的逻辑功能块中插入触发器是复杂的逻辑操作分布完成,减少每个部分的延时,从而提高频率。 18、写出下面程序段的运行结果。 `timescale 10ns/1ns ?? fork

#20 r=1′b0;#10 r=1′b1;#15 r=1′b1;#25 r=1′b1;#5 r=1′b0;join initial $monitor($time,,,”r=%b”,r); Endmodule

答:0 r=x 20 r=0 30 r=1 45 r=1 70 r=1 75 r=0 19、任务和函数的区别。 答:

20、Verilog支持哪几种描述方式,各有什么特点?

答:结构描述、行为描述、数据流描述。结构描述是调用电路元件(比如逻辑门,甚至晶体管)来构建电路,行为描述则是通过描述电路的行为特性来设计电路,也可以采用上述方的混合来描述设计,数据流描述方式主要使用持续赋值语句,多用于描述组合逻辑电路。

21、串行块和并行块的区别

答:①串行块语句begin-end是按串行方式顺序执行,并行块fork-jion中所有语句是并发执行的。②并行块中的延时都是相对与前一条的语句执行结束的相对时间,而并行模块中的延时是相对于该并行块的其实执行时间的。 五、编程

1、采用Verilog HDL语言状态机的三过程方式实现一个“1101”序列检测器,其中状态编码采用一位热码方式,复位信号高电平有效。(21分)

解:’define s0 4’b0001 ’define s1 4’b0010 ’define s2 4’b0100 ’define s3 4’b1000 ’define s4 4’b10000

Module fsm_seq1101_onehot(clk,clr,x,z);

Input clk,clr,x;output reg z;reg [3:0] state,next-state; Always @(posedge clk or posedge clr) Begin

If (clr) state<=’s0; Else state<=next_state; End

Always @(state or x) Begin

Case (state)

‘s0 begin if(x) next-state<=’s1; Else next_state<=’s0;end

‘s1 begin if(x) next-state<=’s0; Else next_state<=’s2;end

‘s2 begin if(x) next-state<=’s3; Else next_state<=’s0;end

‘s3 begin if(x) next-state<=’s4;

本文来源:https://www.bwwdw.com/article/kl0v.html

Top