答案
一、填空题(每空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分)
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 ; i nput [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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库EDA期末复习试卷(2)在线全文阅读。
相关推荐: