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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3719|回复: 1

verilog编程-想写一个长度可变的adder

[复制链接]
发表于 2007-6-18 21:38:06 | 显示全部楼层 |阅读模式

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

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

x
请教大家,我想用en来控制adder。en=0是4 bit的,所以sum[7]~sum[4]全是零。en=1是8bit的。程序和编译的错误在下面,谢谢指教。或者大家有没有见过类似功能的程序,帮忙指导一下。

module fulladder(a, b, cin, sum, cout);
  input a, b, cin;
  output sum, cout;
  assign sum = a ^ b ^ cin;
  assign cout = a & b | a & cin | b & cin;
endmodule

module ripple_adder(a, b, sum, cout);
  input [7:0] a, b;
  output [7:0] sum;
  output cout;
  wire [7:0] c;  
  assign c[0]=0;  // no carry input in this example

  [email=always@(sum]always@(sum[/email] or en)
  case (en)
  0: {sum[7], sum[6],sum[5],sum[4]}=4'b0000; //编译的时候出错:sum是illegal的变量
  1: sum=sum;
  endcase

  fulladder f0(a[0], b[0], c[0], sum[0], c[1]);
  fulladder f1(a[1], b[1], c[1], sum[1], c[2]);
  fulladder f2(a[2], b[2], c[2], sum[2], c[3]);
  fulladder f3(a[3], b[3], c[3], sum[3], c[4]);
  fulladder f4(a[4], b[4], c[4], sum[4], c[5]);
  fulladder f5(a[5], b[5], c[5], sum[5], c[6]);
  fulladder f6(a[6], b[6], c[6], sum[6], c[7]);
  fulladder f7(a[7], b[7], c[7], sum[7], cout);
endmodule

[ 本帖最后由 cherryQ 于 2007-6-18 21:39 编辑 ]
发表于 2007-6-19 10:28:59 | 显示全部楼层
你在google里面搜索一下吧,很多文章都又介绍
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 11:25 , Processed in 0.031176 second(s), 8 queries , Gzip On, Redis On.

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