2338|8

1891

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

【FPGA代码学习】乘法器 [复制链接]


三位数相乘数学乘法表达式
                                        A1       A2       A3
                                  *    B1       B2       B3
      -------------------------------------------
       +                           B3A1     B3A2    B3A3
       +               B2A1    B2A2     B2A3
       +  B1A1    B1A2    B1A3            
      --------------------------------------------
           5列      4列        3列         2列     1列              


串行乘法器:
  1. module multi_CX(clk, x, y, result);
  2.    
  3.     input clk;
  4.     input [7:0] x, y;
  5.     output [15:0] result;

  6.     reg [15:0] result;

  7.     parameter s0 = 0, s1 = 1, s2 = 2;
  8.     reg [2:0] count = 0;
  9.     reg [1:0] state = 0;
  10.     reg [15:0] P, T;
  11.     reg [7:0] y_reg;

  12.     always @(posedge clk) begin
  13.         case (state)
  14.             s0: begin
  15.                 count <= 0;
  16.                 P <= 0;
  17.                 y_reg <= y;
  18.                 T <= {{8{1'b0}}, x};
  19.                 state <= s1;
  20.             end
  21.             s1: begin
  22.                 if(count == 3'b111)
  23.                     state <= s2;
  24.                 else begin
  25.                     if(y_reg[0] == 1'b1)
  26.                         P <= P + T;
  27.                     else
  28.                         P <= P;
  29.                     y_reg <= y_reg >> 1;
  30.                     T <= T << 1;
  31.                     count <= count + 1;
  32.                     state <= s1;
  33.                 end
  34.             end
  35.             s2: begin
  36.                 result <= P;
  37.                 state <= s0;
  38.             end
  39.             default: ;
  40.         endcase
  41.     end

  42. endmodule
复制代码


    流水线乘法器

  1. module multi_4bits_pipelining(mul_a, mul_b, clk, rst_n, mul_out);
  2.    
  3.     input [3:0] mul_a, mul_b;
  4.     input       clk;
  5.     input       rst_n;
  6.     output [7:0] mul_out;

  7.     reg [7:0] mul_out;

  8.     reg [7:0] stored0;
  9.     reg [7:0] stored1;
  10.     reg [7:0] stored2;
  11.     reg [7:0] stored3;

  12.     reg [7:0] add01;
  13.     reg [7:0] add23;

  14.     always @(posedge clk or negedge rst_n) begin
  15.         if(!rst_n) begin
  16.             mul_out <= 0;
  17.             stored0 <= 0;
  18.             stored1 <= 0;
  19.             stored2 <= 0;
  20.             stored3 <= 0;
  21.             add01 <= 0;
  22.             add23 <= 0;
  23.         end
  24.         else begin
  25.             stored0 <= mul_b[0]? {4'b0, mul_a} : 8'b0;
  26.             stored1 <= mul_b[1]? {3'b0, mul_a, 1'b0} : 8'b0;
  27.             stored2 <= mul_b[2]? {2'b0, mul_a, 2'b0} : 8'b0;
  28.             stored3 <= mul_b[3]? {1'b0, mul_a, 3'b0} : 8'b0;

  29.             add01 <= stored1 + stored0;
  30.             add23 <= stored3 + stored2;

  31.             mul_out <= add01 + add23;
  32.         end
  33.     end

  34. endmodule
复制代码




查看本帖全部内容,请登录或者注册
此帖出自FPGA/CPLD论坛

最新回复

我觉得水牛说得没错阿,这种程序问题就是自己手动找到一个解决方法得方式了然后通过程序去操作而已,到写程序得时候基本实现又没什么麻烦的东西  详情 回复 发表于 2015-8-29 23:26
点赞 关注
个人签名
分享铸就美好未来。。。




 

回复
举报

6419

帖子

17

TA的资源

版主

沙发
 
谢楼主分享
此帖出自FPGA/CPLD论坛

点评

我是代码搬运工,我在学习中。。。。。  详情 回复 发表于 2015-8-29 22:12
个人签名training
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

板凳
 

我是代码搬运工,我在学习中。。。。。
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

6037

帖子

195

TA的资源

版主

4
 
不懂技术,纯帮水。。。。
此帖出自FPGA/CPLD论坛
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

5
 
lcofjp 发表于 2015-8-29 20:52
不懂技术,纯帮水。。。。

此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

6
 
不懂技术,纯帮水
此帖出自FPGA/CPLD论坛
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

7
 
elvike 发表于 2015-8-29 20:55
不懂技术,纯帮水

此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

1万

帖子

2853

TA的资源

管理员

8
 
我觉得水牛说得没错阿,这种程序问题就是自己手动找到一个解决方法得方式了然后通过程序去操作而已,到写程序得时候基本实现又没什么麻烦的东西
此帖出自FPGA/CPLD论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

你好,感谢捧场  详情 回复 发表于 2015-8-29 23:27
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

9
 
okhxyyo 发表于 2015-8-29 21:26
我觉得水牛说得没错阿,这种程序问题就是自己手动找到一个解决方法得方式了然后通过程序去操作而已,到写程 ...

你好,感谢捧场
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
福禄克有奖直播:高精度测温赋能电子制造 报名中!
直播时间:2025年2月28日(周五)上午10:00
直播主题:高精度测温赋能电子制造
小伙伴们儿快来报名直播吧~好礼等你拿!

查看 »

 
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
快速回复 返回顶部 返回列表