找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5305|回复: 0
打印 上一主题 下一主题
收起左侧

关于FPGA的VHDL算数运算

[复制链接]
跳转到指定楼层
楼主
ID:51269 发表于 2014-11-10 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    算数运算时FPGA编程设计中常会用到的功能,其规则直接影响变成效果,调用use  ieee.std_logic_unsigned.all;此程序包对不同的数据类型可以进行适当的算数运算:
   1.std_logic_vector()可进行相同位数的加减运算(被加数必须和输出位数相同);
   2.std_logic_vector()可进行相乘法运算(积的位数等于俩乘数位数之和);
   
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
entity adder_n is
port(a,b:in std_logic_vector(4 downto 0);     
     c:in std_logic_vector(2 downto 0);
     Sum1,sum2:out std_logic_vector(9 downto 0);
     sum4,sum3 :out std_logic_vector(4 downto 0) );
end;
Architecture add of adder_n is
begin
Sum1<="00000"&a + b;
Sum2<=a * b;
sum3<=a - b;
sum4<=a + b;
end;
3.Integer(整数)可以进行加、减、乘、除和取余运算;
Library ieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_unsigned.all;
entity adder_n is
generic(n:integer:=4);----改变w的值可以改变运算宽度
port(a:in integerrange 0 to 4095;
     dd,b:in integer range 0 to 255;
     cin:in integer range 0 to 64;
     Sum1,sum2:out integer range 0 to 4095;
     ddd:out integer range 0 to 1023;
     co1,co2:out integer range 0 to 1023);
end;
Architecture add of adder_n is  
begin
Sum1<=a * b;---a,b一个可以是常数,如 Sum1<=2 * b
sum2<=a + b;
ddd<=a / b;---- 虽然是除,但实际为商 取整运算
co1<=a - dd;  
co2<= a REM cin;  ---  取余
  end;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表