在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4412|回复: 16

[求助] verilog的问题

[复制链接]
发表于 2012-11-26 22:44:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 fengyiyong 于 2012-11-26 22:45 编辑

小弟初学verilog编了个8位加法器,编译通过、但仿真不对、加数和被加数却都是高阻、求大神帮助。附上三段代码
testbench:
`timescale 1ns/1ns
module testbench;
reg[7:0]addend,adder;
initial
fork
addend=8'b00001111;
adder=8'b00010001;
join
add
testbench(.addend_a(addend),.adder_a(adder));

adder
test(.addend(addend),.adder(adder));

endmodule


add:
module add(a,b);
output
a,b;
reg[7:0]d,addend_a,adder_a;
reg a,b;
always@(addend_a or
adder_a)
fork
d=8'b11111111;
while(d)
begin
a=addend_a[0];
b=adder_a[0];
addend_a=(addend_a>>1);
adder_a=(adder_a>>1);
d=d<<1;
end
join
adder
add(.a(a),.d(d),.b(b));
endmodule

adder:
module
adder(adder,addend,sum);
input[7:0]addend,adder;
output[9:0]sum;
reg[9:0]sum;
reg
a,b,c,s;
reg[7:0]d;
initial
begin
sum=10'b0000000000;
c=1'b0;
end
always@(d)
begin
s=(~a)&(~b)&c+(~a)&b&(~c)+a&(~b)&(~c)+a&b&c;
c=a&b+a&(~b)&c+(~a)&b&c;
sum[8]=s;
sum[9]=c;
sum=sum>>1;
end
endmodule 111111.jpg
发表于 2012-11-26 23:08:30 | 显示全部楼层
内容不太懂你这样写的意思,建议你看看verilog的语法,没有信号是由于testbench中调用的端口问题吧,而且在adder模块中d是干嘛的,在你的程序运行过程中d回发生变化吗?
 楼主| 发表于 2012-11-26 23:46:33 | 显示全部楼层
回复 2# xmffsf
d其实就是为了能够使位相加循环、这样循环8次、如果要综合的话、不能用repeat()还有for语句的吧、我也是初学额、
发表于 2012-11-27 00:05:41 | 显示全部楼层
似乎设计代码里面不能用fork...join包括语句吧,也是不可综合的吧。
 楼主| 发表于 2012-11-27 09:49:59 | 显示全部楼层
回复 4# gaurson

fork...join和begin...end不是一一个性质的东西么、我还没综合过、仿真都过不了
发表于 2012-11-27 09:59:02 | 显示全部楼层
回复 5# fengyiyong

fork join 一般不能用在RTL coding中,可以用在TestBench里面;begin end在RTL coding里面相当于C语言里的{ }
 楼主| 发表于 2012-11-27 10:43:48 | 显示全部楼层
回复 6# yushuiyang1986


   这样啊、起初在add里面用fork。。。join是因为想在给d赋值的同时、while能够触发、那要是去掉fork。。。in,always这个顺序块如果先给d赋值、那么while是不是就触发不了了、是不是得重新改语句了。
发表于 2012-11-27 12:15:46 | 显示全部楼层
没看懂):
发表于 2012-11-27 13:47:47 | 显示全部楼层
问题:adder add(.a(a),.d(d),.b(b));
这样写不对吧,adder中的端口名字为:adder(adder,addend,sum)
不是a, d, b;这样也能编译过去???

运行肯定是不对的;
发表于 2012-11-27 15:13:01 | 显示全部楼层
fork join是并行语句加入,如果是想按时序的话还是用begin end更好,相当与一对括号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-14 09:24 , Processed in 0.026628 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表