这个程序有些仿真程序可以过,但是综合的时候报错,assign语句里面的 a 要定义为
wire [3:0]a
按照定义a是多少位位宽的变量?
4位
2.按照定义a是什么类型的变量?
a应该是wire型变量,你给定义成了reg。
3.a的赋值语句assign a=5'b10010编译是否会错?
会错,仿真可能对。nc-verilog可以仿真过。
如果错了,是哪里错了,如信山何改正?(提示:assign语句和什么类型的变量搭配?)
reg[3:0]a改成
wire[3:0]a
4.加入改正了错误滑芦中哗知,a的真实取值是多少?
a=4'b1001 (即4‘h9:)
5.k的取值是多少?
k = 0;
6.m的取值是多少?
由于p没有变化,always不会执行,
仿真时m默认为不定值
m=3'bz
综合时m不定。一般为零。
module timer1(clk,second)input clk
output reg second
reg[24:0] cnt
always @(posedge clk)
begin
cnt <= cnt + 1'b1
if (cnt==25'd24999999)
begin
cnt <= 24'd0
second <= ~second
end
end
endmodule
这是一个分频器,是50000000分频器,但是cnt <= 24'd0这句似乎写错了,应该是cnt <= 25'd0再多说一句,这个写的很屁,没有复位辩纯 *** 作,初始状态不可控制。
module ex6(A,B,C,Y)
input A,B,C
output Y
wire out1,out2,out3
and a1(out1,A,B)
and a2(out2,A,C)
and a3(out3,B,C)
or or1(Y,out1,out2,out3)
endmodule
这个门级描述的败困:Y=out1 | out2 | out3 = (A&B) | (A&C) | (B&C);写出真值表,其实就是一个检测ABC三个信号中为真的个数大于等于2电路。携枯咐大于等于2,Y=1,否则Y=0;
module multiplexer4_to_1(out, i0, i1, i2, i3, s1, s0)
output out
input i0, i1, i2, i3
input s1, s0
assign out = s1 ? (s0 ? i3 : i2) : (s0? i1 : i0)
endmodule
这个就更简单了,根据语句直接就是该功能。
同学,我答的很纠结,如果你真的很初学的初学者,我就忍了,如果你已经学了一段时间的verilog了,还是这个水平,我不得不为你担忧哦。嘿嘿,玩笑,希望你能明白!
首先,硬件宽并孙的不叫程序,叫代蔽宏码。。。其次你那个A是[3:0]A吧?
第一圈:k=2,v=v^A[2]
w=A[2]^A[3]
你这个v没有初始值啊慎链。怎么计算?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)