ZYNQ Block Design中总线位宽的截取与合并操作 | 您所在的位置:网站首页 › verilog拼位宽 › 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,可以看到位宽符合预期,这么做的好处在于无需手动去修改生成的信号位宽,一劳永逸。
以上。 |
CopyRight 2018-2019 实验室设备网 版权所有 |