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,可以看到位寬符合預期,這么做的好處在於無需手動去修改生成的信號位寬,一勞永逸。

 

以上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM