zoukankan      html  css  js  c++  java
  • 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,可以看到位宽符合预期,这么做的好处在于无需手动去修改生成的信号位宽,一劳永逸。

    以上。

  • 相关阅读:
    工作的思考十七:工作中容易犯的错误
    学习之路三十四:再一次重构缓存设计
    学习之路三十五:Android和WCF通信
    学习之路二十:两周工作技术总结
    学习之路三十三:重构技巧的学习
    工作的思考十五:升职前需要做的准备(TeamLeader)
    学习之路三十二:VS调试的简单技巧
    maven pom
    maven环境配置
    maven的背景
  • 原文地址:https://www.cnblogs.com/kingstacker/p/11459842.html
Copyright © 2011-2022 走看看