北京航空航天大学
2012 ~2013 学年第 二 学期 《电子电路设计训练》期末考试试卷
( 2013 年 6 月 22 日)
班级:__________;学号:______________;姓名:__________________;成绩:___________
(宋体五号字)
注意事项:1、本试卷为闭卷考试;
2、解答问题时,请给出必要的步骤,并注意结构完整; 3、请直接在试卷上作答;
4、模拟部分和数字部分分别计分。
总计分栏: 模拟部分(50分) 数字部分(50分) 合计
A. 模拟部分 (共50分)
计分栏 1 2 3 4 5 6 7 8 9 合计 (2分) (2分) (3分) (3分) (3分) (2分) (12分) (5分) (18分)
正题:(宋体五号字)(题单形式)
一、 ( 分) 二、 ( 分)
B. 数字部分 (共50分)
计分栏 一 (5分) 二 (5分) 三 (18分) 四 (22分) 合计
一、选择题(共5分,每空1分)
1. 综合是EDA设计流程的关键步骤,在下面对综合的描述中,____D____是错误的。
A.综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;
B.综合就是将电路的高级语言转化成低级的,可与FPGA/CPLD的基本结构相映射的网表文件;
C.综合就是将行为描述逻辑转换成门级结构表示的一个映射过程;
D.综合可理解为,用电路网表文件表示软件描述与给定硬件结构的映射过程,并且这种映射关系是唯一的。
2. 不完整的IF语句,其综合结果可实现____A____。
A.时序逻辑电路 C.双向电路
B.组合逻辑电路 D.三态控制电路
3. P、Q、R都是同样大小的存储器类型变量,下面___C____表达式是正确的。
A.reg[n-1:0] P[m:1], Q, R
B.reg [m:1] P, Q, R
D.reg[n-1:0] [m:1]P, [m:1]Q, [m:1]R
C.reg[n-1:0] P[m:1], Q[m:1], R[m:1]
4. 下列程序中,always状态将描述一个带异步Nreset和Nset输入端的上升沿触发器,则
下面___D____表述是正确的。 always@( ) if(!Nreset) Q<=0; else if(Nset) Q<=1; else
Q<=D;
A.posedge Nreset or posedge Clock or negedge Nset B.negedge Nreset or posedge Clock or negedge Nset C.negedge Nreset or negedge Clock or posedge Nset D.negedge Nreset or posedge Clock or posedge Nset 5. 下列表达式中正确的是____C____。
A.4’b1010 & 4’b1101 = 1’b1; C.!4’b1011 || !4’b0000 = 1’b1;
B.~4’b1100 = 1’b1; D.&4’b1101 = 1’b1;
二、填空题(共5分,每空1分)
1. 相对于VHDL,Verilog HDL在语法结构方面更加灵活,同时对于不同的行为抽象级别
(系统级、算法级等),Verilog HDL在__开关电路级__层面比VHDL的描述能力更强。 2. 状态机按照输出逻辑可以分为两种,一种称为____Mealy_____状态机,其时序逻辑的输
出不仅取决于当前状态,还取决于输入;另一种称为___Moore____状态机,其时序逻辑的输出只取决于当前状态。
3. 下面程序中,语句__4、5、6、11__是并行执行,语句____8、9____是顺序执行。 module M(??); 1 input ??. ; 2 output ??;
3 reg a,b??; 4 always@(??..) 5 assign f=c&d; 6 always@(??..) 7 begin 8 a=??.; 9 b=??.; 10 end
11 mux mux1(out,in0,in1);
endmodule
三、电路及时序分析题(共18分)
1. 请利用行为描述的方式设计一个1位D触发器,包括一个异步清零端clr,一个时钟接
入端clk,一个数据输入端d,一个数据输出端q,一个数据输出反向端qb;基于此,利用模块实例化的方法设计一个4位的移位寄存器,clrb是全局清零信号,clk是全局时钟,IN为串行输入信号,Q为输出信号。(8分)
Q[0]INdqclkclrQ[1]dqclkclrQ[2]dqclkclrQ[3]dqclkclrclrbclkmodule D_FF (d, clr, clk, q, qb );
input d, clk, clr; output q, qb; reg q; assign qb = ~q; always @( posedge clk or negedge clr)
module shifter(IN, clrb, clk, Q); input IN, clk, clrb; output [3:0] Q; D_FF D1(IN, clrb, clk, Q[0],), D2(Q[0], clrb, clk, Q[1],), D3(Q[1], clrb, clk, Q[2],),
begin if(!clr)
Q <= 0; else
Q <= D;
end endmodule
D3(Q[2], clrb, clk, Q[3],); endmodule
2. 设计如下码型变换器,并将图中输出信号的波形补充完整。输入信号RST(复位信号),
CLK(时钟信号,与数据X同步),X(输入待处理信号),Y(输出)。(异或运算:两个输入相同则输出0,不同则输出1,Z-1运算:信号延迟一个时钟输出)。注:复位之前输出信号的状态即波形图中黑色区域为未知状态)。(10分) RST
x(n)异或运算CLK
X Y
module CodeTrans(RST, CLK, X, Y );
input RST, CLK, X; output Y; reg Y; always @( posedge CLK) begin if(RST)
Y <= 0; else
Y <= Y^X;
end endmodule
+y(n-1)Z-1y(n)
四、电路设计题(共22分)
1. 设计一个5分频电路(输出信号的频率为输入信号频率的1/5倍),使输出信号相邻的两
个时钟周期,占空比分别为3:2和2:3,即如果当前输出信号周期的高电平比低电平长一个时钟周期,则下一个输出信号的周期高电平时间应该比低电平短一个周期。(输入信号为rst(异步重置,低电平有效),clk,输出为out)。(6分)
module FenPin(rst, clk, out ); input rst, clk; output out; reg out; reg[3:0] count;
always @( posedge clk or negedge clr) begin if(!clr)
count <= 4’d0; else if(count==4’d9)
count <= 4’d0;
else count<=count+1; if(!clr) out <= 0; else if(count==4’d0 || count==4’d3 || count==4’d5 || count==4’d7) out <= ~out; end
endmodule
2. 设计一个密码锁,密码控制电路由一个密码校验模块和时序控制模块组成。打开密码锁
时,需先按“#”号(送往时序控制模块),时序控制模块开始30s计时,如果输入时间超过30s,则自动清零,需重新按“#”号开启下一个开锁过程;如果在30s以内,密码输入完毕,则按“OK”按钮(送往密码校验模块和时序控制模块),当密码校验模块返回密码正确,则密码锁被打开,直到密码箱关闭并送给时序控制模块close信号;如果密码校验错误,则密码清零,需重新输入密码,并且计时初值恢复到30s。(共16分) 1) 根据题干信息,设计该密码锁时序控制模块的状态转移图。(8分)
a) 输入端口:
? clk 时钟信号(假设时钟频率100Hz) ? p1 “#”电平(电平信号,高电平有效,手离开按钮信号消失) ? p2 “OK”电平(电平信号,高电平有效,手离开按钮信号消失) ? CRC 交验结果(电平信号,高电平有效,并假定校验稳态输出时间在
一个时钟周期以内) ? close 密码锁关闭信号(电平信号,高电平有效) b) 输出端口:
? open 开锁信号(电平信号,高电平有效) c) 中间变量:
? count 计数器值
P1=0Idleclose=1Openclose=0count=0P1/count->30sCRC=1/open=1CRC=0/count->30sWaitP2count>0
Veri2) 为了实现密码管理功能增强,约定密码校验时,最多只能连续输入3次错误密码,
否则密码锁将被锁定1小时后才能恢复正常,请根据题干信息,对1)问中的状态转移图进行修正,可以增加中间变量flag用于错误密码校验计数。(8分)
P1=0Idleclose=1Opencount=0count>0count=0close=0P1/count->30s/flag->0ErrorCRC=1/open=1CRC=0 and flag=3/count->1hCRC=0 and flag<2/count->30s/flag++WaitP2count>0
Veri