zoukankan      html  css  js  c++  java
  • 1组合逻辑电路算术运算电路

    1.4.1 +、-、*、/、%电路

    (1)加法电路:每1位大约消耗1个LE,示例代码如下

    View Code
     1 module arithmetic
    2 (
    3 input [7:0] iA,
    4 input [7:0] iB,
    5 output [8:0] oAdd
    6 );
    7
    8 assign oAdd=iA+iB;
    9
    10 endmodule

    RTL级视图如下

    testbench如下

    View Code
     1 `timescale 1ns/1ns
    2 module arithmetic_tb;
    3
    4 reg [7:0] ia=8'b1011_0111;
    5 reg [7:0] ib=8'b0100_1000;
    6 wire [8:0] oadd;
    7
    8 initial #100 $stop;
    9
    10 arithmetic arithmetic_inst
    11 (
    12 .iA(ia),
    13 .iB(ib),
    14 .oAdd(oadd)
    15 );
    16
    17 endmodule

    仿真波形如下

    (2)乘法电路

    代码将加法电路代码中语句oAdd=iA+iB;改为  oMul=iA*iB;即可。oMul位宽为[15:0]

    代码综合后乘法单元直接调用的CycloneII嵌入式乘法器lpm_mult

    RTL级视图

    仿真波形图


     (3)除法电路

    代码将加法电路代码中语句oAdd=iA+iB;改为  oDiv=iA/iB;即可。oDiv位宽为[7:0]

    代码综合后除法单元直接调用的lpm_divide实现的

    取余运算也很消耗资源,每位运算大约消耗10LE.

    RTL级视图如下

    RTL级波形仿真

    (4)取余运算

    代码将加法电路代码中语句oAdd=iA+iB;改为  oMod=iA%iB;即可。oMod位宽为[7:0]

    代码综合后取余运算直接调用的lpm_divide实现的

    除法运算很消耗资源,每位运算大约消耗10LE.

    RTL级视图如下

    RTL级波形仿真

    1.4.2 数据比较器

    代码如下,风格非常类似C语言

    View Code
     1 module arithmetic
    2 (
    3 input [3:0] iA,
    4 input [3:0] iB,
    5 output oEQ,
    6 output oGT,
    7 output oLT,
    8 output oGT_EQ,
    9 output oLT_EQ,
    10 output oNEQ
    11 );
    12
    13 assign oEQ=(iA==iB),
    14 oNEQ=(iA!=iB),
    15 oGT=(iA>iB),
    16 oLT=(iA<iB),
    17 oGT_EQ=(iA>=iB),
    18 oLT_EQ=(iA<=iB);
    19 endmodule

    RTL级视图如下

    RTL级仿真波形如下

    1.4.3 移位电路

    1.4.3.1 逻辑移位电路

    代码如下

    View Code
     1 module arithmetic
    2 (
    3 input [7:0] iA,
    4 input [3:0] iBit,
    5 output [7:0] osll,
    6 output [7:0] osrl
    7 );
    8
    9 assign osll=iA<<iBit,
    10 osrl=iA>>iBit;
    11 endmodule

    RTL级视图如下

    RTL级仿真波形

    1.4.3.2 算术移位

    算术移位运算符为<<<,>>>;

    有符号数算术移位和逻辑移位,两者左移时一样,右移时逻辑移位最高位填充的是0,算术移位最高位填充的是符号位。

  • 相关阅读:
    O021、创建 Image
    O020、理解 Glance
    O019、通过例子学习 Keystone
    O018、理解 Keystone 核心概念
    O017、部署DevStack
    O016、搭建实验环境
    O015、OpenStack 架构
    O014、云计算与OpenStack
    O013、动手实践Linux VLAN
    O012、Linux如何实现VLAN
  • 原文地址:https://www.cnblogs.com/yuesheng/p/2124168.html
Copyright © 2011-2022 走看看