FPGA考试

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

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

《硬件描述语言及FPGA设计》复习要点:

一、名词解释

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

综合:指的是将较高级抽象层次的设计描述自动转化为较低层次的描述过程。

EDA(Electronic Design Automation)电子设计自动化:就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。

1.EDA :电子设计自动化 2.HDL :硬件描述语言

3.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就是以 计算机 为工作平台,以 EDA软件工具 为开发环境,以 PLD器件或 者 ASIC专用集成电路 为目标器件设计实现电路系统的一种技术。

2.在数字电路设计过程中, 综合 是将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。

3.通常,将对CPLD的下载称为 编程 ,对FPGA中的SRAM进行直接下载的方式称 配置 。 4.仿真时是否考虑硬件延时分类,可分为 功能 仿真和 时序 仿真。 5.IP核主要包括 硬核 、 固核 和 软核 。

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

8.PLD按照编程工艺和编程元件可以分为 采用熔丝(Fuse) 、 采用反熔丝(Antifuse) 、 采用紫外线擦出、点编程方式的器件 、 EEPROM型 、 闪速存储器(Flash)型 和 采

用静态存储器(SRAM)机构的器件

9.简单PLD包括 PROM 、 PLA 、 PAL 和 GAL 四类。

10.PLD按不同的内部结构可分为基于 乘积项 结构的PLD器件和基于 查找表 结构的PLD器件,前者的典型代表是 CPLD ,后者的典型代是 SRAM 。 11.PLD的开发中常用的测试技术是: 边界扫描测试 技术。

12.FPGA器件主要有两类配置方式: 主动配置模式 和 被动配置模式 。 13.Cyclone器件支持的配置方式有 JTAG模式 、 PS模式 和 AS模式 。 14.写出下图所示F0和F1的表达式:F0=

A1?A0?A1?A0 ,F1=

A1?A0?A1?A0 。

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

2. 端口是模块与外界连接和通信的信号线,有三种类型,分别是 输入端口 、 输出端口 、 输入/输出端口 。

3. always过程语句既可以用来描述 时序 电路,也可以描述 组合 电路。

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

5. 调用元件的格式是:< 门元件关键字 >< 例化门元件名 >( 输入 端口列表, 输出 端口列表) 。

6.用verilog描述电路需要注意的是:存盘的文件名与 Verilog模块名 一致,文件名的后缀是 .v 。

1. Verilog 程序由 各种符号流 构成,符号包括 空白符 、 操作符 、 数字 、 字符串 、 注释 、 标示符 、 关键字 。

2.Verilog中的标识符可以是任意一组 字母 、 数字 以及符号 “ $” 和 “-” 的组合,但标识符的第一个字符必须是 字母 或者 “-” 。

3. Verilog中的常量主要有如下3种类型: 整数 、 实数 、 字符串 。 4.在整数的书写规则里, x(或z)在二进制中代表 1 位x(或z),在八进制中代表 3 位x(或z),在十六进制中代表 4 位x(或z),它代表的宽度取决于 进制 。 5. 在 位宽 和 ’ 之间,以及 进制 和 数值 之间允许出现空格,除此之外不允许出现空格。

6. 当位宽与进制缺省时表示的是 十 进制数。

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

8. 实数的表示方法有 十进制表示法 和 科学计数法 ,实数转换为整数的方法是 四舍五入 。

9.Verilog有四种基本的逻辑状态,分别是 0 、 1 、 X或x 、 Z或z 。 10. 向量的定义形式为: 类型[MSB:LSB] 向量名 。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、在下列关联方式中不属于元件例化语句的是 C 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、边界扫描测试技术

答: 引脚 TDI 名称 测试数据输入 功能 指令和测试数据的串行输入引脚,数据在TCLK的上升沿时刻移入 TDO 测试数据输出 指令和测试数据的串行输出引脚,数据在TCLK的下降沿时刻移出:没有数据移出器件处于高阻态 TMS 测试模式选择 选择JTAG指令模式的串行输入引脚,在正常工作下TMS处于高电平 TCLK TRST 测试时钟输入 测试电路复位 时钟引脚 低电平有效,用于初始化或异步复位边界扫描电路 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

Output=FF3 FF3=FF2 FF2=FF1 FF1=input end

inputFF1FF2FF3outputclock

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、任务和函数的区别。 答: 输入与输出 任务 可有任意各个种类型的参数 函数 至少一个输入,不能将inout类型作为输出 调用 任务只可在过程语句中调用,不能在连续赋值语句assign中调用 函数可作为表达式中的一个操作数调用,在过程语句和连续赋值语句中均可调用 定时事件控制(#,@和wait) 调用其他任务和函数 任务可调用其他任务和函数 函数可调用其他函数但不可调用其他任务 返回值 任务不向表达式返回值 函数向调用它的表达式返回一个值 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;i<=6;i=i+1)//给i赋值进行for循环 if (b[i]) sum=sum+1;//条件成立sum加1 if (sum[2]) a=1;//sum最高位为1,a输出1 else a=0;//其他为0 end endmodule

该段程序实现的逻辑功能是什么?(每条注释1分,共12分)

7人表决器

3、用verilog设计一个8位加法器。(10分) Module dad8(cout,sum,,ina,inb,cin); Input cin;input [7:0] ina,inb; Output [7:0] sum;output cout; Assign {cout,sum}=ina+inb+cin; endmodule

4、用verilog设计一个8位二进制加法器,带异步复位端口。(12分) Module dad8(cout,sum,,reset,clk,ina,inb,cin); Input cin;input [7:0] ina,inb;input rest,clk; Output [7:0] sum;output cout;

Always @(posedge clk or negedge reset) Begin

If(~reset) qout<=0; end

Assign {cout,sum}=ina+inb+cin; endmodule

5、用verilog设计一个模60的BCD码计数器。(15分) Module count60(qout,cout,data,load,reset,clk); Input load,clk,reset;input[7:0] data; Output reg[7:0] qout;output cout; Always @(posedge clk)

Begin if(reset) qout<=0; Else if(load) qout<=data; Else begin

If (qout[3:0]==9) Begin qout[3:0]<=0;

If (qout[7:4]==5) qout[7:4]<=0; Else qout[7:4]<=qout[7:4]+1; End

Else qout[3:0]<=qout[3:0]+1; Dend End

Assign cout=(qout==8’d59)?1:0; endmodule

6、试用条件运算符描述如图所示的二选一多路选择器。(9分)

Out=sel?in1:in0;

7、已知A=5’b11001; B=5’b10101; C=4’b1101;试求:(9分) (1)A&C=5’b01001 (2)~&B=1 (3)B&&C=1

8、设计一个如图所示的模16(四位二进制)计数器程序,其中D0~D3为输入数据端,Q0~Q3

为输出数据,EN为使能端(高电平有效),CLK为时钟端(上升沿触发),Clr,Load分别为同步清零、同步预置数端(低电平有效),Qc为进位输出端。(本题9分)

Module count16(Qc,Q0,Q1,Q2,D0,D1,D2,clk,clr,load,en);

input clk,clr,load,en; input[3:0] D;output reg [3:0] Q; ouput Qc; Always @(posedge clk) Bengin

If(clr) Q<=0; Else if(load) Q<=D; Else if(en) Q<=D; Else begin

If(Q<15) Q<=Q+1; End End

Assign Qc=(Q==4’d15)?1:0; endmodule

9、试用Verilog HDL语言产生如下图所示波形。(50分)

Timescale 1ns/1ns

Module test1(clk,in1,in2) Reg clk;paramet delay=5 Always@()

Begin clk=0;in1=0;in2=1 #5 clk=~clk;in2=0; #5 clk=~clk;in2=1;

#5 clk=~clk;in=1; #5 clk=~clk; #5 clk=~clk;in1=0; #5 clk=~clk;in1=1; #5 clk=~clk;in2=0; #5 clk=~clk;in1=0; #5 $stop

Initial $monitor($time,,,”clk=%b in1=%b in2=%b”,clk,in1,in2); Endmodule

10、下面的代码是用Verilog语句设计的边沿触发的D触发器,请分析代码并回答以下问题。

1) 该描述方式为何种描述?数据流

2) 输出端口名有哪些,输入端口名有哪些?Q,qbar,输入d,clk,clear 3) 画出该方法综合出的D触发器电路图。(门级)

11、编写4位并串转换程序。

Module ser_pal(clk,reset,en,in,out);

Iput clk,reset,en,in;output[3:0] out;reg[3:0] out; Always @(posedge clk) Begin if(reset) out<=4’h0; Else if(en) out<={out,in}; End Endmodule

11、用verilog语言设计一个表决电路,参加表决者9人,同意为1,不同意为0,同意过半者泽表决通过。

Module voter9(pass,vote) Input[9:1] vote;output reg pass; Reg[2:0] sum;integer i; Always @(vote) Begin sum=0; For(i=1;i<=9;i++)

If(vote[i]) sum=sum+1; If(sum==5) pass=1; Else pass=0; End endmodule

12、设计一个带使能的三——八译码器,使能信号EN为高电平时真值表如下,EN为低电平时输出为8′b11111111。 使能信号为高电平时真值表 d[2:0]输入 3′b000 3′b001 3′b010 3′b011 y[7:0]输出 8′b11111110 8′b11111101 8′b11111011 8′b11110111 d[2:0]输入 3′b100 3′b101 3′b110 3′b111 y[7:0]输出 8′b11101111 8′b11011111 8′b10111111 8′b01111111 Module tt38(d,y,en1,en2a,en2b);

Input[2:0] d; input en1,en2a,en2b;output reg[7:0] y; Always @(*)

Begin if(en1&~en2a&~en2b) Begin case(d) 3′b000:y=8′b11111110; 3′b001:y=8′b11111101; 3′b010:y=8′b11111011; 3′b011:y=8′b11110111; 3′b100:y=8′b11101111; 3′b101:y=8′b11011111; 3′b110:y=8′b10111111; 3′b111:y=8′b01111111; Default:y=8′b11111111; Endcase end Else y=8′b11111111 End Endmodule

13、有一个比较电路,当输入的一位8421BCD码大于4时,输出为1,否则为0。试编写出Verilog程序。

Module BCD_Compare(a,b);

Output b;intput [3:0] a;

Assign b=(a>=4)?1:0;

14、试编写两个四位二进制数相减的Verilog程序。 module a_sub_b_4bit (a, b, c, s, sc) input [3:0] a, b;

input c; //C为上个减法的借位。 output reg [3:0] s;

output sc; //sc为当前的借位 wire [3:0] sc_t; assign sc = sc_t[3];

a_sub_b_1bit a_sub_b_1bit_0u (.a(a[0], .b(b[0], .c(c), .s(s[0]), .sc(sc[0])); a_sub_b_1bit a_sub_b_1bit_1u (.a(a[1], .b(b[1], .c(sc_t[0]), .s(s[1]), .sc(sc[1])); a_sub_b_1bit a_sub_b_1bit_2u (.a(a[2], .b(b[2], .c(sc_t[1]), .s(s[2]), .sc(sc[2])); a_sub_b_1bit a_sub_b_1bit_3u (.a(a[3], .b(b[3], .c(sc_t[2]), .s(s[3]), .sc(sc[3]));

endmodule

15、指出下面程序中的错误并改正。要求设计一个8位二进制带同步置数、同步清零(低电平有效)的计数器 。

module count(out,data,load,reset,clk);

output reg out; input[7:0] data;

input load,clk,reset;

always @(posedge clk or negedge reset or negedge load) begin

if(reset) out=8'h00; else if(load) out=data; else out=out+1; end

Reg [7:0]out

If(~reset) out<=8’b00000000; Else if(load)out<=data; Else out<=out+1 endmodule

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

Top