免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8053 | 回复: 18
打印 上一主题 下一主题

ALU 的设计与实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-30 22:10 |只看该作者 |倒序浏览
以前写的一篇东西
http://blog.chinaunix.net/u/11773/showart.php?id=190540

怎样用 Verilog HDL 语言来描述?

论坛徽章:
0
2 [报告]
发表于 2007-03-31 14:00 |只看该作者
串行加法器的延迟太大,特别32位,这样做对速度影响太大。
建议用先行进位加法器。
可以参考《逻辑与计算机设计基础》(美) M. Morris Mano, (美) Charles R. Kime著
里面原理和VHDL代码都有

论坛徽章:
0
3 [报告]
发表于 2007-03-31 14:03 |只看该作者
那篇东西是很基础的东东,《逻辑与计算机设计基础》我有,只是没看多少页

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2007-03-31 23:12 |只看该作者
原帖由 一剑凌云山海情 于 2007-3-31 14:00 发表于 2楼  
串行加法器的延迟太大,特别32位,这样做对速度影响太大。
建议用先行进位加法器。
可以参考《逻辑与计算机设计基础》(美) M. Morris Mano, (美) Charles R. Kime著
里面原理和VHDL代码都有

32位实现每位都先行进位是绝对不现实的。

论坛徽章:
0
5 [报告]
发表于 2007-04-01 02:07 |只看该作者
原帖由 cjaizss 于 2007-3-31 23:12 发表于 4楼  

32位实现每位都先行进位是绝对不现实的。

肯定不会每一位都先行进位。看门电路的fanout能力了。
对了,在加法器的设计上,除了这两种方案,还有其他的实现办法吗?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2007-04-01 02:43 |只看该作者
可以用组间先行进位的方法来实现加法器,串行和并行综合而成
也可组间串行。

[ 本帖最后由 cjaizss 于 2007-4-1 18:28 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2007-04-01 16:13 |只看该作者
4位串行进位加法器

  1. module ADD_BIT(x,y,cin,s,cout);
  2. input x,y,cin;
  3. output s,cout;
  4. assign s =x ^ y ^ cin;
  5. assign cout = (x & y) | (x & cin) | (y & cin);
  6. endmodule


  7. module ADD_ALL_4bits(X,Y,CIN,S,COUT);
  8. input [3:0] X;
  9. input [3:0] Y;
  10. input CIN;
  11. output [3:0] S;
  12. output COUT;
  13. wire c1,c2,c3;
  14. ADD_BIT ab1 (X[0],Y[0],CIN,S[0],c1);
  15. ADD_BIT ab2 (X[1],Y[1],c1,S[1],c2);
  16. ADD_BIT ab3 (X[2],Y[2],c2,S[2],c3);
  17. ADD_BIT ab4 (X[3],Y[3],c3,S[3],COUT);
  18. endmodule
复制代码

[ 本帖最后由 cjaizss 于 2007-4-1 17:25 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2007-04-01 17:34 |只看该作者
完全描述4位先行进位加法器的代码我是写不下去了,写起来比较郁闷

论坛徽章:
0
9 [报告]
发表于 2007-04-01 17:43 |只看该作者
原帖由 cjaizss 于 2007-4-1 17:34 发表于 8楼  
完全描述4位先行进位加法器的代码我是写不下去了,写起来比较郁闷

  来讲讲先行进位的思路吧

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2007-04-01 18:16 |只看该作者
以下是4位整数的加法器,使用的是组间串行进位。2位一组

  1. module ADD_2bits(X,Y,CIN,S,COUT);
  2. input [1:0] X;
  3. input [1:0] Y;
  4. input CIN;
  5. output [1:0] S;
  6. output COUT;
  7. wire c;
  8. assign c = (X[0] & Y[0]) | ((X[0] | Y[0]) & CIN);
  9. assign COUT = (X[0] & Y[0])
  10.                 | ((X[1] | Y[1]) & (X[0] & Y[0]))
  11.                 |  ((X[1] | Y[1]) & (X[0] | Y[0]) & CIN);
  12. endmodule

  13. module ADD_4bits(X,Y,CIN,S,COUT);
  14. input [3:0] X;
  15. input [3:0] Y;
  16. input CIN;
  17. output [3:0] S;
  18. output COUT;
  19. wire c;
  20. ADD_2bits ADD_2bits_1(X[1:0],Y[1:0],CIN,S[1:0],c);
  21. ADD_2bits ADD_2bits_2(X[3:2],Y[3:2],c,S[3:2],COUT);
  22. endmodule

复制代码

[ 本帖最后由 cjaizss 于 2007-4-1 18:19 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP