75、 76、 77、 78、 79、 80、 81、 82、 83、 84、 85、 86、 87、 88、 89、 90、 91、 92、 93、 94、 95、 96、 97、 98、 99、 100、 101、 102、 103、 104、 105、 106、 107、 108、 109、 110、 111、 112、 113、 114、 115、 116、 117、 118、 119、 120、 121、 122、
123、 124、 125、 126、 127、 128、 129、 130、 131、 132、 133、 134、 135、 136、 137、 138、 139、 140、 141、 142、
143、 态机FSM分为哪两类?有何区别?有限状态机的状态编码风格主要有哪三种?FSM的三
段式描述风格中,三段分别描述什么?(本题6分)
答:Mearly型,Moore型;前者与输入与当前状态有关,而后者只和当前状态有关;Binary,Gray,
One-Hot编码;分别为状态保存,状态切换,输出;
五、程序注解(20分,每空1分)
module AAA ( a ,b ); 定义模块名为AAA,端口为a,b output a ;
定义a为输出端口 input [6:0] b ; 定义b为输出端口,b为7位二进制数 reg[2:0] sum; sum为reg型变量,用于统计赞成的人数 integer i; 定义整型变量i为循环控制变量 reg a ; 定义a为寄存器变量 always @ (b) 过程语句,敏感变量为b begin 语句块 sum = 0; sum初值为0 for(i = 0;i<=6;i = i+1) for语句,统计b为1的个数
if(b[i]) 条件语句 sum = sum+1; 只要有人投赞成票,则 sum加1 if(sum[2]) a = 1; 若超过4人赞成,则表决通过
else a = 0; 若不到4人,则不通过 end endmodule
本
程序的逻辑功能是: 器 。
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; input[3:0] b; input 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进制计数器。 mdule CNT10 (CLK,RST,EN,LOAD,COUT,DOUT,DATA); input CLK ; input EN ; input RST ; input LOAD ; input [3:0] DATA ; output [3:0] DOUT ; output 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