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,算术移位最高位填充的是符号位。

  • 相关阅读:
    Apache Calcite对多种异构数据源的支持
    如何成为优秀的技术Leader
    Spring @Scheduled执行原理解析
    Google Guava官方教程
    数据倾斜
    服务框架 Pigeon 的设计与实现
    递归算法的简单应用
    让ListView中的控件失去焦点:android:descendantFocusability="blocksDescendants"
    android:layout_weight的真实含义/android:layout_gravity的条件
    复杂布局的时候,不要复制布局
  • 原文地址:https://www.cnblogs.com/yuesheng/p/2124168.html
Copyright © 2011-2022 走看看