• ZYNQ Block Design中总线位宽的截取与合并操作


    前言

    在某些需求下,数据的位宽后级模块可能不需要原始位宽宽度,需要截位,而某些需求下,需要进行多个数据的合并操作。

    在verilog下,截位操作可如下所示:

    wire [7:0] w_in;
    wire [3:0] w_out;
    assign w_out = win[3:0];

    合并操作可如下所示:

    wire [3:0] w_in0;
    wire [3:0] w_in1;
    wire [7:0] w_out;
    assign w_out = {w_in1,w_in0};

    所以问题就来了:如何在不写代码的情况下在block design设计中实现截取与合并的操作呢?

     

    用到的IP

    (1)constant IP。

    此IP可以输出可配置位宽的常数,电平可配置0或者1。

    (2)concat IP。

    此IP可以使得分立的线拼接成单一线输出,相当于verilog描述的拼接操作。输入端口数和位宽均可配置。注意In1会放置在高位,[In1,In0]。

    (3)slice IP。

    此IP功能跟concat IP相反,会把输入截取想要的位宽输出。相当于verilog的位宽截取操作。输入位宽,输出位宽,截取msb和截取lsb都是可以配置的。

    实例

    100M网口使用MII接口。可以知道数据tx和rx都是4bit位宽的,但在MII IP接口中,数据位宽为8bit。则需截位与合并。

    (1)总线位宽合并。

    如下图所示,对于100M的网口使用,rx的高4bit需要接0。则需要使用到constant IP和concat IP。

    (2)总线位宽截取。

    对于100M网口的tx,高位是没用的,则通过slice IP截取低4bit作为输出。

    重新生成wrapper,可以看到位宽符合预期,这么做的好处在于无需手动去修改生成的信号位宽,一劳永逸。

    以上。

  • 相关阅读:
    第八章:模型视图
    第二章:初识Qt
    第三章:正式开始
    第七章:QtQuick控件
    第十章:形状
    第六章:Fluid元素
    第一章:前言
    第九章:画布
    weblogic基于https访问其他servers时无法访问
    ssh远程连接网络构建 wang
  • 原文地址:https://www.cnblogs.com/kingstacker/p/11459842.html
Copyright © 2020-2023  润新知