6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如何实现?
答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述podge CLK用于指明正向跳变,或negedge用于指明负向跳变实现
6-2 哪一种复位方法必须将复位信号放在敏感信号表中?给出这两种电路的Verilog 描述。
答:异步复位必须将复位信号放在敏感信号表中。
同步清零:
always @(podge CLK) //CLK上升沿启动
Q<=D; //当CLK有升沿时D被锁入Q
异步清零:
filter pressalways @(podge CLK or negedge RST) begin //块开始
if(!RST)Q<=0; //如果RST=0条件成立,Q被清0
el if(EN) Q<=D;//在CLK上升沿处,EN=1,则执行赋值语句
end//块结束
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的数量。
module Statistics8(sum,A); output[3:0]sum;
input[7:0] A;
reg[3:0] sum;
integer i;
always @(A)
begin
sum=0;
for(i=0;i<=8;i=i+1) //for 语句if(A[i]) sum=sum+1;
el sum=sum;
end
endmodule module Statistics8(sum,A); parameter S=4;
output[3:0]sum;散步英语
input[7:0] A;
英文菜谱
reg[3:0] sum;
reg[2*S:1]TA;
integer i;tickets
always @(A)
begin
TA=A; sum=0;
repeat(2*S)
begin
if(TA[1])sum=sum+1;
re
TA=TA>>1;
end
end
endmodule
repeat循环语句
for循环语句
module Statistics8(sum,A);parameter S=8;output[3:0]sum;input[7:0] A;reg[S:1] AT;reg[3:0] sum;reg[S:0] CT;always @(A) begin
AT={{S{1'b0}},A}; sum=0; CT=S;while(CT>0) begin
if(AT[1])sum=sum+1;el sum=sum;begin CT= CT-1; AT=AT>>1; end end end
endmodule
6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的数量。
while 循环语句
6-4 用循环语句设计一个7人投票表决器。
module voter7(pass,vote);
output pass;
input[6:0] vote;
reg[2:0] sum;
六级准考证丢了怎么办integer i;
reg pass;纸牌屋第二季 字幕
always @(vote)
begin
aipasum=0;
for(i=0;i<=6;i=i+1) //for 语句
布兰妮墨菲
if(vote[i]) sum=sum+1;
if(sum[2]) pass=1; //若超过4 人赞成,则pass=1
el pass=0;
end
endmodule
6-5 Verilog设计一个4位4输入最大数值检测电路。
//Verilog设计一个4位4输入最大数值检测电路
module Maximum_value_detection(Mostlarge,a,b,c,d);//4位4输入最大数值检测电路
output [3:0] Mostlarge;
input [3:0] a,b,c,d;
wire[3:0]sum1,sum2,sum3;
assign sum1=(a>b)?a:b;
assign sum2=(c>d)?c:d;
中文名字翻译成英文assign Mostlarge=(sum1>sum2)?sum1:sum2;
endmodule