3218|4

6

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

verilog的问题 [复制链接]

编了一个verilog的四位无符号加法器、测试信号的仿真没有问题了、但是主程序的仿真仿不出来、不知道是调用的问题还是别的,请大家帮忙查错
测试信号:
  1. `include "adder.v"
  2. module adder_tb();
  3. reg[3:0]addend,adder;//加数和被加数
  4. reg a1,a2,a3,a4,b1,b2,b3,b4,c0;//各个位和初始进位
  5. initial
  6. begin
  7. addend=4'b0001;//被加数为1
  8. adder=4'b0010;//加数为2
  9. c0=1'b0;
  10. a1=addend[0];
  11. a2=addend[1];
  12. a3=addend[2];
  13. a4=addend[3];
  14. b1=adder[0];
  15. b2=adder[1];
  16. b3=adder[2];
  17. b4=adder[3];
  18. end
  19. adder m(.a1(a1),.a2(a2),.a3(a3),.a4(a4),.b1(b1),.b2(b2),.b3(b3),.b4(b4),.c0(c0));//调用
  20. endmodule
复制代码
主程序:
  1. module adder(a1,a2,a3,a4,b1,b2,b3,b4,c0,sum);
  2. input a1,a2,a3,a4,b1,b2,b3,b4,c0;
  3. output[4:0] sum;
  4. reg[4:0] sum;
  5. wire c1,c2,c3,c4;//中间进位
  6. always@(*)
  7. sum[0]=((~a1)&(~b1)&c0)|((~a1)&b1&(~c0))|(a1&(~b1)&(~c0))|(a1&b1&c0);
  8. always@(*)
  9. sum[1]=((~a2)&(~b2)&c1)|((~a2)&b2&(~c1))|(a2&(~b2)&(~c1))|(a2&b2&c1);
  10. always@(*)
  11. sum[2]=((~a3)&(~b3)&c2)|((~a3)&b3&(~c2))|(a3&(~b3)&(~c2))|(a3&b3&c2);
  12. always@(*)
  13. begin
  14. sum[3]=((~a4)&(~b4)&c3)|((~a4)&b4&(~c3))|(a4&(~b4)&(~c3))|(a4&b4&c3);
  15. sum[4]=c4;
  16. end
  17. assign c1=(a1&b1)|(a1&(~b1)&c0)|((~a1)&b1&c0);
  18. assign c2=(a2&b2)|(a2&(~b2)&c1)|((~a2)&b2&c1);
  19. assign c3=(a3&b3)|(a3&(~b3)&c2)|((~a3)&b3&c2);
  20. assign c4=(a4&b4)|(a4&(~b4)&c3)|((~a4)&b4&c3);
  21. endmodule
复制代码


[ 本帖最后由 fengyiyong 于 2012-12-6 22:49 编辑 ]
此帖出自FPGA/CPLD论坛

最新回复

由于verilog语言支持模块化的编程,一个模块一个功能,而整个系统又可以分为好几个功能,所以就需要TOP文件,TOP文件将所有的功能模块放在一起,组成一个功能更强的模块或者系统。  详情 回复 发表于 2012-12-7 16:09

点评

主程序中“always @ ”是需要有数据变动才会运行的,也就是主程序中的一位加法的程序没有工作。 你可以在TB文件中,过上10个时间单位(#10),将加数和被加数改动一次,这样就可以触发主程序了。  详情 回复 发表于 2012-12-7 16:05
好奇,在verilog里,top 文件到底是干嘛的呢?没懂:Sweat:  详情 回复 发表于 2012-12-3 23:22
点赞 关注
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

回复 楼主 fengyiyong 的帖子

好奇,在verilog里,top 文件到底是干嘛的呢?没懂
此帖出自FPGA/CPLD论坛

点评

由于verilog语言支持模块化的编程,一个模块一个功能,而整个系统又可以分为好几个功能,所以就需要TOP文件,TOP文件将所有的功能模块放在一起,组成一个功能更强的模块或者系统。  详情 回复 发表于 2012-12-7 16:09
顶层模块么、就是测试信号、  详情 回复 发表于 2012-12-6 22:50
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 吟啸烟霞 的帖子

顶层模块么、就是测试信号、
此帖出自FPGA/CPLD论坛
 
 
 

回复

269

帖子

0

TA的资源

纯净的硅(中级)

4
 

回复 楼主 fengyiyong 的帖子

主程序中“always @ ”是需要有数据变动才会运行的,也就是主程序中的一位加法的程序没有工作。
你可以在TB文件中,过上10个时间单位(#10),将加数和被加数改动一次,这样就可以触发主程序了。
此帖出自FPGA/CPLD论坛
个人签名一个人,一本书,一杯茶,一帘梦。
 
 
 

回复

269

帖子

0

TA的资源

纯净的硅(中级)

5
 

回复 沙发 吟啸烟霞 的帖子

由于verilog语言支持模块化的编程,一个模块一个功能,而整个系统又可以分为好几个功能,所以就需要TOP文件,TOP文件将所有的功能模块放在一起,组成一个功能更强的模块或者系统。
此帖出自FPGA/CPLD论坛
个人签名一个人,一本书,一杯茶,一帘梦。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表