发布论文 | 上传资料 | 发布供求 | 发布求职 | 发布项目 | 加入收藏 | RSS
您当前的位置:首页 > 文章中心 > EDA 设计 > ASIC/CPLD/FPGA/IC

一款Ripple结构的加法器

时间:2008-09-27 12:10:52  来源:  作者: 点击:8

代码如下:
module adder(a,b,cin,sum,cout);
  input a,b;     
  input cin;
  output cout;
  output sum;
  wire cout,sum;
  assign sum=a^b^cin;
  assign cout=(a&cin)|(b&cin)|(a&b);
endmodule

module adder_8(fa,fb,fcin,fsum,fcout);
 input [7:0]fa,fb;
 output [7:0]fsum;
 input fcin;
 output fcout;
 wire [0:6]ftemp;
 adder fa1(.a(fa[0]),.b(fb[0]),.cin(fcin),.sum(fsum[0]),.cout(ftemp[0])),
       fa2(.a(fa[1]),.b(fb[1]),.cin(ftemp[0]),.sum(fsum[1]),.cout(ftemp[1])),
       fa3(.a(fa[2]),.b(fb[2]),.cin(ftemp[1]),.sum(fsum[2]),.cout(ftemp[2])),
       fa4(.a(fa[3]),.b(fb[3]),.cin(ftemp[2]),.sum(fsum[3]),.cout(ftemp[3])),
       fa5(.a(fa[4]),.b(fb[4]),.cin(ftemp[3]),.sum(fsum[4]),.cout(ftemp[4])),
       fa6(.a(fa[5]),.b(fb[5]),.cin(ftemp[4]),.sum(fsum[5]),.cout(ftemp[5])),
       fa7(.a(fa[6]),.b(fb[6]),.cin(ftemp[5]),.sum(fsum[6]),.cout(ftemp[6])),
       fa8(.a(fa[7]),.b(fb[7]),.cin(ftemp[6]),.sum(fsum[7]),.cout(fcout));
endmodule

module adder_test;
 reg [7:0] da,db;
 wire [7:0] dsum;
 wire dcout;
 reg dcin;
 adder_8 f1(da,db,dcin,dsum,dcout);
 initial
 begin
   da=0;db=0;dcin=0;
   #10 $display("a=%b,b=%b,cin=%b,sum=%d,cout=%d",da,db,dcin,dsum,dcout);
   db=8'b1111;
   for(da=8'b0;da<=8'b11111111;da=da+1)
     begin #10 dcin=~dcin;
       $display("a=%b,b=%b,cin=%b,sum=%d,cout=%d",da,db,dcin,dsum,dcout);
     end
 end
endmodule
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
音乐程序的设计原理之单片机
音乐程序的设计原理之
FPGA的可编程全数字锁相环路实现
FPGA的可编程全数字锁
什么是模拟电路?
什么是模拟电路?
挪威发明蛇形消防机器人
挪威发明蛇形消防机器
相关文章
栏目更新
栏目热门