阅读下面Verilog代码段,回答问题

阅读下面Verilog代码段,回答问题,第1张

这个程序有些仿真程序可以过,但是综合的时候报错,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没有初始值啊慎链。怎么计算?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12521903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存