2015年EDA复习11

发布时间 : 星期一 文章2015年EDA复习11更新完毕开始阅读

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

10. 使用case 语句设计八功能的算术运算单元(ALU),其输入信号a 和b 均为4

位,还有功能选择信号select 为3 位,输出信号为out(5 位),算术运算单元ALU 所执行的操作与select 信号有关,具体关系如图1 所列(忽略输出结果中的上溢和下溢的位)。 select 信号 3`b000 3`b001 3`b010 3`b011 3`b100 3`b101 3`b110 3`b111 功能 Out=a out=a+b out=a-b out=a/b out=a%b out=a<<1 out=a>>1 out=a>b

module ALU(a,b,select,out); input[3:0] a,b; input[2:0] select; output[4:0] out; reg[4:0] out; always @(select) begin

case(select) 3'b000: out=a; 3'b001: out=a+b; 3'b010: out=a-b; 3'b011: out=a/b; 3'b100: out=a%b; 3'b101: out=a<<1; 3'b110: out=a>>1; 3'b111: out=a>b; default:out=5'bx;

endcase end

endmodule

11、请用$random 配合求模运算编写:

(1)用于测试的跳变沿抖动为周期1/10 的时钟波形。 (2)随机出现的脉宽随机的窄脉宽。

module random_pulse(dout); output[9:0] dout; reg[9:0] dout; integer delay; initial begin

#10 dout=0;

for(k=0;k<100;k=k+1) begin

delay={$random}; #delay dout=1; #delay dout=0; end end

endmodule

12、用Verilog语言设计一个格雷码至二进制数的转换器(如表1),并编写测试代码。 提示:格雷码转换为二进制码算法是:从左边第二位起,将每一位与左边一位解码后的值“异或”,作为该解码后的值(最左边的一位依然不变)。 表1 格雷码与二进制转换 格雷码 000 001 011 010 110 111 101 100 二进制 000 001 010 011 100 101 110 111 module gry2bin(Gry,Bin); parameter length = 3; output [length-1:0] Bin; input [length-1:0]Gry ; reg [length-1:0] Bin; integer i; always @ (Gry) begin

Bin[length-1]=Gry[length-1]; for(i=length-2;i>=0;i=i-1) Bin[i]=Bin[i+1]^Gry[i]; end endmodule

`timescale 1ns/1ns `include \ module stimulus; reg[2:0] Gry; wire[2:0]Bin;

gry2bin mycount(Gry,Bin); initial begin Gry=3'b000; #10 Gry=3'b001; #10 Gry=3'b011; #10 Gry=3'b010; #10 Gry=3'b110; #10 Gry=3'b111; #10 Gry=3'b101; #10 Gry=3'b100; #10 $finish; end

initial $monitor($time,\ endmodule

13、图1所示的是双2选1多路选择器构成的电路MUXK。对于其中MUX21A,当s=0和s=1时,分别有y=a和y=b。试在一个模块结构中用两个过程来表达此电路。

联系合同范文客服:xxxxx#qq.com(#替换为@)