您的当前位置:首页正文

verilog考试题

来源:帮我找美食网
精品---

西安电子科技大学

考试时间 分钟

试 题

题号 一 二 三 四 五 六 七 八 九 十 分数 总分 1.考试形式:闭(开)卷;2.本试卷共 四 大题,满分100分。 班级 学号 姓名 任课教师

一、 选择题(每题2分,共18分)

1. 下面哪个是可以用verilog语言进行描述,而不能用VHDL语言进行描述的级别?( A )

(A) 开关级 (B)门电路级 (C) 体系结构级 (D) 寄存器传输级

2.在verilog中,下列语句哪个不是分支语句?( D ) (A) if-else

3.下列哪些Verilog的基本门级元件是多输出( D ) (A) nand

4.Verilog连线类型的驱动强度说明被省略时,则默认的输出驱动强度为( B )

(A) supply

5.元件实例语句“notif1 #(1:3:4,2:3:4,1:2:4) U1(out,in,ctrl);”中截至延迟的典

--精品

(B) case (C) casez (D) repeat

(B) nor (C) and (D) not

(B) strong (C) pull (D) weak

精品---

型值为( B ) (A) 1

6.已知 “a =1b’1; b=3b'001;”那么{a,b}=( C )

(A) 4b'0011

7.根据调用子模块的不同抽象级别,模块的结构描述可以分为(ABC )

(A) 模块级 (B)门级 (C) 开关级 (D) 寄存器级

8.在verilog语言中,a=4b'1011,那么 &a=(D )

(A) 4b'1011

9.在verilog语言中整型数据与( C )位寄存器数据在实际意义上是相同的。 (A) 8

(B) 16

(C) 32

(D) 64

(B) 4b'1111

(C) 1b'1

(D) 1b'0

(B) 3b'001

(C) 4b'1001

(D) 3b'101

(B) 2

(C) 3

(D) 4

二、 简答题(2题,共16分)

1.Verilog HDL语言进行电路设计方法有哪几种(8分)

1、自上而下的设计方法(Top-Down) 2、自下而上的设计方法(Bottom-Up)

--精品

精品---

3、综合设计的方法

2.specparam语句和parameter语句在参数说明方面不同之处是什么(8分)。

1、.specparam语句只能在延时的格式说明块(specify块)中出现,而parameter语句则不能在延时说明块内出现

2、由specparam语句进行定义的参数只能是延时参数,而由parameter语句定义的参数则可以是任何数据类型的参数

3、由specparam语句定义的延时参数只能在延时说明块内使用,而由parameter语句定义的参数则可以在模块内(该parameter语句之后)的任何位置说明

三、 画波形题(每题8分,共16分)

1. 根据下面的程序,画出产生的信号波形(8分)

module para_bloc_nested_in_seri_bloc(A,B); output A,B; reg a,b; initial

--精品

精品---

begin A=0; B=1; #10 A=1; fork B=0; #10 B=1; #20 A=0; join #10 B=0; #10 A=1; B=1; end endmodule

--精品

精品---

2. 根据下面的程序,画出产生的信号波形(8分)

module signal_gen1(d_out); output d_out; reg d_out; initial begin d_out=0; #1 d_out=1; #2 d_out=0; #3 d_out=1; #4 d_out=0; end endmodule

四、 程序设计(4题,共50分)

1. 试用verilog语言产生如下图所示的测试信号(12分)

--精品

精品---

clkin1in205101520module signal_gen9(clk,in1,in2); output in1,in2,clk; reg in1,in2,clk; initial begin in1=0; in2=1; clk=0; end initial begin #15 in1=1 #10 in1=0; #5 in1=1; #10 in1=0; end

2530354045ns

--精品

精品---

initial begin #5 in2=0; #5 in2=1; #25 in2=0; end always begin

#5 clk=~clk; end endmodule

2.试用verilog语言,利用内置基本门级元件,采用结构描述方式生成如图所示的电路(12分)

D3D2D1D0S2S1

--精品

T3T2T1T0Z精品---

module MUX4x1(Z,D0,D1,D2,D3,S0,S1);

output Z;

inout D0,D1,D2,D3,S0,S1; and u0 (T0, D0, S0bar, S1bar) ,

u1(T1, D1, S0bar, S1), u2 (T2, D2, S0, S1bar), u3 (T3, D3, S0, S1) ,

not u4 (S0bar, S0),

u5 (S1bar, S1);

or u6 (Z, T0, T1, T2, T3); endmodule

3. 试用verilog语言描述:图示为一个4位移位寄存器,是由四个D触发器(分别设为U1,U2,U3,U4)构成的。其中seri_in是这个移位寄存器的串行输入;clk为移位时脉冲输入;clr为清零控制信号输入;Q[1]~Q[3]则为移位寄存器的并行输出。(14分)

--精品

精品---

module d_flop(q,d,clr,clk); output q; input d,clr,clk; reg q; always @(clr) if(!clr) assign q=0; else deassign q; always @(negedge clk) q=d; endmodule

module shifter(seri_in,clk,clrb,Q); input seri_in,clk,clrb; output[3:0] Q;

d_flop U1(Q[0],seri_in,clrb,clk), U2(Q[1],Q[0],clrb,clk), U3(Q[2],Q[1],clrb,clk), u4(Q[3],Q[2],clrb,clk); endmodule

--精品

精品---

4.利用有限状态机,以格雷码编译方式设计一个从输出信号序列中检测出101信号的电路图,其方块图、状态图和状态表如图表示。(12分)

目前状态CSS0=00S1=01S2=11下一状态NS和输出QoutDin=0Din=1SO, OS1, 0S2, 0S1, 0S0, 0S1, 1 module melay(clk,Din,reset,Qout); input clk,reset; input Din; output Qout; reg Qout;

parameter[1:0] S0=2'b00,S1=2'b01,S2=2'b11; reg[1:0] CS; reg[1:0] NS;

always @(posedge clk or posedge reset)

--精品

精品---

begin

if(reset==1'b01) CS=S0; else CS=NS; end

always @(CS or Din) begin case(CS) S0:beign

if(Din==1'b0) begin NS=S0; Qout=1'b0; end else begin NS=S1; Qout=1'b0; end end

--精品

精品---

S1:begin

if(Din==1'b0) begin NS=S2; Qout=1'b0; end else begin NS=S1; Qout=1'b0; end end S2:beign

if(Din==1'b0) begin NS=S0; Qout=1'b0; end else begin NS=S1;

--精品

精品---

Qout=1'b0; end end endcase end endmodule

填空题(10分,每小题1分)

1. 用EDA技术进行电子系统设计的目标是最终完成 ASIC 的设计与实现。 2. 可编程器件分为 FPGA 和CPLD 。

3. 随着EDA技术的不断完善与成熟, 的设计方法更多的被应用于Verilog HDL设计当中。

4. 目前国际上较大的PLD器件制造公司有 和 公司。 5. 完整的条件语句将产生 电路,不完整的条件语句将产生 电路。 6. 阻塞性赋值符号为 ,非阻塞性赋值符号为 。

二、选择题 (10分,每小题2分)

1. 大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是 。

A.FPGA全称为复杂可编程逻辑器件; B.FPGA是基于乘积项结构的可编程逻辑器件;

C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置; D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。

2. 基于EDA软件的FPGA / CPLD设计流程为:原理图/HDL文本输入 → 综合 →___ __→ →适配→编程下载→硬件测试。正确的是 。 ①功能仿真 ②

--精品

精品---

时序仿真 ③逻辑综合 ④配置 ⑤分配管脚 A.③① B.①⑤ C.④⑤ D.④②

3. 子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化 。 ①流水线设计 ②资源共享 ③逻辑优化 ④串行化 ⑤寄存器配平 ⑥关键路径法 A.①③⑤ B.②③④ C.②⑤⑥ D.①④⑥ 4. 下列标识符中,__________是不合法的标识符。 A.9moon B.State0 C. Not_Ack_0 D. signall 5. 下列语句中,不属于并行语句的是:_______

A.过程语句 B.assign语句 C.元件例化语句 D.case语句 三、EDA名词解释(10分) 写出下列缩写的中文含义: ASIC: RTL: FPGA: SOPC: CPLD: LPM: EDA: IEEE: IP: ISP:

四、简答题(10分)

1. 简要说明仿真时阻塞赋值与非阻塞赋值的区别(本题4分)。

2. 简述有限状态机FSM分为哪两类?有何区别?有限状态机的状态编码风格主要有哪三种?FSM的三段式描述风格中,三段分别描述什么?(本题6分)

--精品

精品---

五、程序注解(20分,每空1分)

module AAA ( a ,b ); output a input [6:0] b reg[2:0] sum; integer i; reg a

always @ (b) begin sum = 0;

for(i = 0;i<=6;i = i+1) if(b[i]) sum = sum+1;

if(sum[2]) a = 1; else a = 0; end endmodule

本程序的逻辑功能是:

四、VerilogHDL语言编程题(1、2小题10分,3小题20分) 要求:写清分析设计步骤和注释。 1. 试用Verilog HDL描述一个带进位输入、输出的8位全加器。 端口:A、B为加数,CI为进位输入,S为和,CO为进位输出

--精品

精品---

2. 编写一个带异步清零、异步置位的D触发器。

端口:CLK为时钟,D为输入,CLK为清零输入端,SET为置位输入端;Q输出端。

3. 设计一个带有异步复位控制端和时钟使能控制端的10进制计数器。 端口设定如下:

输入端口:CLK:时钟,RST:复位端,EN:时钟使能端,LOAD:置位控制端, DIN:置位数据端;

输出端口:COUT:进位输出端,DOUT:计数输出端。

--精品

精品---

一、填空题(每空2分,共20分)

1、 ASIC 2、 FPGA 和 CPLD 。 3、 自顶向下 4、 Altera 和 Xilinx 5、 组合 时序 6、 = <= 二、选择题 (10分,每小题2分) 1、C 2、 B 3、B 4、 A 5、D

三、EDA名词解释(10分) ASIC 专用集成电路 RTL 寄存器传输级 FPGA 现场可编程门阵列 SOPC 可编程片上系统 CPLD 复杂可编程逻辑器件 LPM 参数可定制宏模块库

EDA 电子设计自动化 IEEE 电子电气工程师协会 IP知识产权核 ISP 在系统编程

四、简答题(10分)

1、简要说明仿真时阻塞赋值与非阻塞赋值的区别(本题4分)。 答:非阻塞(non-blocking)赋值方式 ( b<= a):

b的值被赋成新值a的操作, 并不是立刻完成的,而是在块结束时才完成; 块内的多条赋值语句在块结束时同时赋值; 硬件有对应的电路。

阻塞(blocking)赋值方式 ( b = a): b的值立刻被赋成新值a;

完成该赋值语句后才能执行下一句的操作; 硬件没有对应的电路,因而综合结果未知。

2、 简述有限状态机FSM分为哪两类?有何区别?有限状态机的状态编码风格主要有哪三种?FSM的三段式描述风格中,三段分别描述什么?(本题6分)

答:Mearly型,Moore型;前者与输入与当前状态有关,而后者只和当前状态有关;Binary,Gray,One-Hot编码;分别为状态保存,状态切换,输出; 五、程序注解(20分,每空1分)

--精品

精品---

本程序的逻辑功能是: 7人投票表决器。

六、VerilogHDL语言编程题(1、2小题10分,3小题20分) 要求:写清分析设计步骤和注释。 1.试用Verilog HDL描述一个带进位输入、输出的8位全加器。 端口:A、B为加数,CIN为进位输入,S为和,COUT为进位输出

--精品

精品---

module add4v(a,b,ci,s,co); input[3:0] a,b,ci; output[3:0] s; output co; wire[3:0] carry;

function fa_s(input a,input b,input ci); fa_s = a ^ b ^ ci; endfunction

function fa_c(input a,input b,input ci); fa_c = a & b | a & ci | b & ci; endfunction

assign s[0] = fa_s(a[0],b[0],ci); assign carry[0] = fa_c(a[0],b[0],ci); assign s[1] = fa_s(a[1],b[1],carry[0]); assign carry[1] = fa_c(a[1],b[1],carry[0]); assign s[2] = fa_s(a[2],b[2],carry[1]); assign carry[2] = fa_c(a[2],b[2],carry[1]); assign s[3] = fa_s(a[3],b[3],carry[2]);

--精品

精品---

assign co = fa_c(a[3],b[3],carry[2]); endmodule

2.编写一个带异步清零、异步置位的D触发器。

3.设计一个带有异步复位控制端和时钟使能控制端的10进制计数器。 module CNT10 (CLK,RST,EN,LOAD,COUT,DOUT,DATA); input CLK,EN,RST,LOAD,DATA; output [3:0] DOUT,COUT ; reg [3:0] Q1 reg COUT

assign DOUT = Q1;

always @(posedge CLK or negedge RST) begin if (!RST) Q1 <= 0; else if (EN) begin

if (!LOAD) Q1 <= DATA; else if (Q1<9) Q1 <= Q1+1; else

Q1 <= 4'b0000; end end

always @(Q1) if (Q1==4'h9) COUT = 1'b1;

--精品

精品---

else

COUT = 1'b0; endmodule

二○一○~二○一一学年 第二学期 (A)卷

课程名称 Verilog硬件描述语言 适用专业 2008电信 考试方式 (闭)卷 考试时间 (120) 分钟

题 号 得 分 评卷人 一 二 三 四 五 六 七 总分 备注:所有试题答案必须全部写在试卷答题纸上,试题纸上答题无效。

一、填空题(共26分,每空 2 分)

1. Verilog的基本设计单元是 。它是由 组成,一部分描述 ; 另一部分描述 即定义输入是如何影响 的。

2. 用assign描述的语句我们一般称之为 逻辑,并且它们是属于

语句,即于语句的书写次序 。而用always描述的语句我们一般称之为 逻辑或 逻辑,并且它们是属于 语句,即于语句的书写 。

3. 在case语句中至少要有一条 语句

二、简答题(共15分,每小题5分)

1. 怎样理解在进程语句中,阻塞语句没有延迟这句话?

2. 在进程中什么情况下综合为时序电路?什么情况下综合为组合电路? 3. 为什么在Verilog语言中,其综合只支持次数确定的循环,而不支持次数不

确定的循环?

三、改错(15分)

//下述是一个实现四位数的BCD码加法的程序,请把正确的程序写在试卷上 module bcdadd(clk,a,b,c,d,a1,b1,c1,d1,q1,q2,q3,q4,cout) input clk;

input a,b,c,d,a1,b1,c21,d21[3:0]; output q1,q2,q3,q4[3:0]; output cout;

--精品

精品---

reg q1,q2,q3,q4; [3:0]

always @( clk, a,b,c,d,a1,b1,c1,d1 ); begin

q1=a+a1;

if(q1>9) {cout,q1}=q1+6; q2=b+b1+cout;

if(q2>9) {cout,q2}=q2+6; q3=c+c1+cout;

if(q3>9) {cout,q3}=q3+6; q4=d+d1+cout;

if(q4>9) {cout,q4}=q4+6; endmodule

四、编程 (15分)

编程实现带异步清0、异步置1的D触发器。

五、编程 (15分)

编程实现求补码的程序,输入是带符号的8位二进制数。

六、编程 (14分)

编程实现一个并行加载串行输出的程序,输入是一个8位的二进制数。

二○一○~二○一一学年 第二学期 (B)卷

课程名称 Verilog硬件描述语言 适用专业 2008电信 考试方式 (闭)卷 考试时间 (120) 分钟

题 号 得 分 评卷人 一 二 三 四 五 六 七 总分 备注:所有试题答案必须全部写在试卷答题纸上,试题纸上答题无效。

--精品

精品---

一、填空题(共10分,每空 2 分)

1. 已知x=4’b1001,y=4’b0110,则x的4位补码为 ,而y的4位的补码

为 。

2. 在case语句中至少要有一条 语句。

3. 两个进程之间是 语句。而在Always中的语句则是 语句。

二、简答题(共20分,每小题 5分)

1. 进程语句的启动条件是怎样?

2. 为什么在Verilog语言中,其综合只支持次数确定的循环,而不支持次数不

确定的循环?

3. Reg型和wire型信号有什么本质的区别?Reg型信号的初始值一般是什么? 4. 在Verilog语言中什么情况下必需使用复合语句?表达一个复合语句的的语

法是怎样的?

三、改错(15分)

//下述是一个实现计数器,并用数码管显示,请把正确的程序写在试卷上 module alpher(choice,data,clk) inputs clk;

outputs choice, data; [6:0] reg count; [3:0]

always @ (posedges clk or choice) begin

count = count + 1; case (count) 4'b0000: data <= 8'b11111100;//(共阴的数字0) 4'b0001: data <= 8'b01100000; 4'b0010: data <= 8'b11011010; 4'b0011: data <= 8'b11110010; 4'b0100: data <= 8'b01100110; 4'b0101: data <= 8'b10110110; 4'b0110: data <= 8'b10111110; 4'b0111: data <= 8'b11100000; 4'b1000: data <= 8'b11111110; 4'b1001: data <= 8'b11110110; 4'b1010: data <= 8'b11101110; 4'b1011: data <= 8'b00111110; 4'b1100: data <= 8'b10011100;

--精品

精品---

4'b1101: data <= 8'b01111010; 4'b1110: data <= 8'b10011110; endcase

choice = 8'b1000000;//(点亮第1位数码管) endmodule

四、编程(15分)

编程实现带同步清0、同步置1的D触发器。

五、编程(15分)

编程实现两个4位二进制数相减的程序。

六、编程(10分)

编程实现一个并行加载串行输出的程序,输入是一个8位的二进制数。

七、编程(15分)

用阻塞赋值方式编程实现二选一功能。

二○一○~二○一一学年 第二学期 (A)卷

参考答案及评分标准

课程名称 Verilog硬件描述语言 填空题(共26分,每空 2 分)

1. Verilog的基本设计单元是模块。它是由两部分组成,一部分描述接口;另

一部分描述逻辑功能,即定义输入是如何影响输出的。 2. 用assign描述的语句我们一般称之为组合逻辑,并且它们是属于并行语句,

即于语句的书写次序无关。而用always描述的语句我们一般称之为组合逻辑或时序逻辑,并且它们是属于串行语句,即于语句的书写有关。 3. 在case语句中至少要有一条default语句

二、简答题(共15分,每小题5分)

1. 怎样理解在进程语句中,阻塞语句没有延迟这句话?

答:这是因为,在进程语句中,有阻塞语句和非阻塞语句这两种,非阻塞语句是有延迟的,而阻塞语句它也是有延迟的,这是因为因果系统都有延迟的,

--精品

精品---

只是阻塞语句的延迟比非阻塞语句的延迟小若干个数量级,因此可视为没有延迟。

2. 在进程中什么情况下综合为时序电路?什么情况下综合为组合电路?

答:在进程中只有当敏感信号是沿触发(即上升沿或下降沿)时,此时综合为时序电路;而在进程中只有当敏感信号是电平沿触发时,此时综合为组合电路。

3. 为什么在Verilog语言中,其综合只支持次数确定的循环,而不支持次数不

确定的循环?

答:这是因为,在Verilog语言中,它是为电路设计而设计的一门语言,它如高级语言不同,若循环的次数不确定,则会带来不确定的延迟,而这在电路中是不允许存在的,故综合只支持次数确定的循环,即对于一个具体的芯片,其延迟是一个定值。

三、改错(15分)

//下述是一个实现四位数的BCD码加法的程序 module bcdadd(clk,a,b,c,d,a1,b1,c1,d1,q1,q2,q3,q4,cout); input clk;

input [3:0]a,b,c,d,a1,b1,c21,d21; output [3:0]q1,q2,q3,q4;

output cout; //输出进位 reg [3:0] q1,q2,q3,q4;

always @( clk,or a or b or c or d or a1 or b1 or c1 or d1 ) begin

q1=a+a1;

if(q1>9) {cout,q1}=q1+6; q2=b+b1+cout;

if(q2>9) {cout,q2}=q2+6; q3=c+c1+cout;

if(q3>9) {cout,q3}=q3+6; q4=d+d1+cout;

if(q4>9) {cout,q4}=q4+6; endmodule

四、编程 (15分)

编程实现带异步清0、异步置1的D触发器。

module DFF1(q,qn,d,clk,set,reset); input d,clk,set,reset;

--精品

精品---

output q,qn; reg q,qn;

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

if (!reset) begin

q <= 0; //异步清0,低电平有效 qn <= 1; end

else if (!set) begin

q <= 1; //异步置1,低电平有效 qn <= 0; end

else begin q <= d; qn <= ~d; end end

endmodule

五、编程 (15分)

编程实现求补码的程序,输入是带符号的8位二进制数。 module test12 (clk, din,dout); input clk; input[7:0] din; output [7:0]dout; reg [7:0]dout; reg x; reg [6:0]y;

always@( clk or din) begin x=din[7]; //符号位赋给x

if(x==1) //当符号位为1,即负数

begin

y=din[6:0]; //除符号位之外的7位赋值给y dout[6:0]=~y; //对其取反 dout[7]=x; //符号位不变 end else dout=din; //若符号位不为1,即为0,正数,补码为其本身

--精品

精品---

end

endmodule

六、编程 (14分)

编程实现一个并行加载串行输出的程序,输入是一个8位的二进制数。 module test12 (clk, en, d_in, s_out); input clk; input en;

input[9:0] d_in; output s_out; reg s_out; reg[3:0] I;

always@(posedge clk) begin if(en == 1'b1) begin

if(I == 4'b0000) begin s_out <= d_in[9]; end

if(I == 4'b0001) begin s_out <= d_in[8]; end

if(I == 4'b0010) begin s_out <= d_in[7]; end

if(I == 4'b0011) begin s_out <= d_in[6]; end

if(I == 4'b0100) begin s_out <= d_in[5]; end

if(I == 4'b0101) begin s_out <= d_in[4]; end

if(I == 4'b0110)

--精品

精品---

begin s_out <= d_in[3]; end

if(I == 4'b0111) begin s_out <= d_in[2]; end

if(I == 4'b1000) begin s_out <= d_in[1]; end

if(I == 4'b1001) begin s_out <= d_in[0]; end I = I+1; if (I>4'b1001) begin I = 4'b0000; end end end

endmodule

二○一○~二○一一学年 第二学期 (B)卷

参考答案及评分标准

课程名称 Verilog硬件描述语言

一、填空题(共10分,每空 2 分)

1. 已知x=4’b1001,y=4’0110,则x的4位补码为4’b1111,而y的4位的补

码为4’b0110

2. 在case语句中至少要有一条default语句。

3. 两个进程之间是并行语句。而在Always中的语句则是顺序语句。

二、简答题(共20分,每小题 5 分)

--精品

精品---

1. 进程语句的启动条件是怎样?

答:进程语句的启动条件是敏感信号发生变化,则进程语句启动,并且从上到下执行一次,然后就处于等待状态,当敏感信号再发生变化,再从复上述过程。

2. 为什么在Verilog语言中,其综合只支持次数确定的循环,而不支持次数不

确定的循环?

答:这是因为,在Verilog语言中,它是为电路设计而设计的一门语言,它如高级语言不同,若循环的次数不确定,则会带来不确定的延迟,而这在电路中是不允许存在的,故综合只支持次数确定的循环,即对于一个具体的芯片,其延迟是一个定值。

3. Reg型和wire型信号有什么本质的区别?Reg型信号的初始值一般是什

么?

答:Reg型信号用于进程语句中,并且其语句是顺序语句;而wire型信号则用于模块中,并且其语句是并发语句;Reg型信号的初始值一般为左边值,即0。

4. 在Verilog语言中什么情况下必需使用复合语句?表达一个复合语句的的

语法是怎样的?

答:在进程语句中,其条件和循环语句中,只能执行一条语句,当多于一条语句时,则要采用复合语句,复合语句以begin开头,以 end作为结束。

三、改错(15分)

//下述是一个实现计数器,并用数码管显示: module alpher(choice,data,clk) ; input clk;

output[6:0] choice, data; reg[3:0] count;

always @ (posedge clk or choice) begin

count <= count + 1; case (count) 4'b0000: data <= 8'b11111100;//(共阴的数字0) 4'b0001: data <= 8'b01100000; 4'b0010: data <= 8'b11011010; 4'b0011: data <= 8'b11110010; 4'b0100: data <= 8'b01100110; 4'b0101: data <= 8'b10110110; 4'b0110: data <= 8'b10111110; 4'b0111: data <= 8'b11100000; 4'b1000: data <= 8'b11111110; 4'b1001: data <= 8'b11110110; 4'b1010: data <= 8'b11101110;

--精品

精品---

4'b1011: data <= 8'b00111110; 4'b1100: data <= 8'b10011100; 4'b1101: data <= 8'b01111010; 4'b1110: data <= 8'b10011110; endcase

choice = 8'b1000000;//(点亮第1位数码管) endmodule

四、编程(15分)

编程实现带同步清0、同步置1的D触发器。

module DFF2(q,qn,d,clk,set,reset); input d,clk,set,reset; output q,qn; reg q,qn;

always @(posedge clk) begin

if (reset) begin

q <= 0; qn <= 1; //同步清0,高电平有效 end

else if (set) begin

q <=1; qn <=0; //同步置1,高电平有效 end

else begin

q <= d; qn <= ~d; end end endmodule

五、编程(15分)

编程实现两个4位二进制数相减的程序。

module updown_count(a,d,clk,sub); input[3:0]a,d; input clk; output[3:0] sub; reg[3:0] sub;

always @(clk or a or d) begin

if (a>=d) sub=a-d; else sub=d-a;

--精品

精品---

end endmodule

六、编程(10分)

编程实现一个并行加载串行输出的程序,输入是一个8位的二进制数。 module test12 (clk, en, d_in, s_out); input clk; input en;

input[9:0] d_in; output s_out; reg s_out; reg[3:0] I;

always@(posedge clk) begin if(en == 1'b1) begin

if(I == 4'b0000) begin s_out <= d_in[9]; end

if(I == 4'b0001) begin s_out <= d_in[8]; end

if(I == 4'b0010) begin s_out <= d_in[7]; end

if(I == 4'b0011) begin s_out <= d_in[6]; end

if(I == 4'b0100) begin s_out <= d_in[5]; end

if(I == 4'b0101) begin s_out <= d_in[4]; end

if(I == 4'b0110)

--精品

精品---

begin s_out <= d_in[3]; end

if(I == 4'b0111) begin s_out <= d_in[2]; end

if(I == 4'b1000) begin s_out <= d_in[1]; end

if(I == 4'b1001) begin s_out <= d_in[0]; end I = I+1; if (I>4'b1001) begin I = 4'b0000; end end end

endmodule

七、编程 (15分)

用阻塞赋值方式编程实现二选一功能。 module sel(d0,d1,sel,q); output q;

input d0,d1,sel; reg q;

always @(d0 or d1 or sel) begin

if (sel==1) q=d0; else q=d1; end

endmodule

assign (sel==0)?d0:d1

--精品

因篇幅问题不能全部显示,请点此查看更多更全内容

Top