2017-05-10 73 views
1

目前我正在使用Kintex 7和microblaze,用於僞隨機位序列函數。我已經在HLS中執行了PRBS並創建了HLS IP,然後將HLS IP與vivado集成,生成了比特流並將其導出到SDK。如何執行HLS IP和SDK之間的數據通信?

實際上,我需要通過HLS IP將像0和1這樣的僞隨機比特序列返回到XSDK。

但是在SDK中,我只獲取「單個位」值(0或1)而不是隨機位序列。如何獲得HLS IP和SDK之間的隨機位序列?

+0

你可以發佈一些你的問題的例子代碼?至少頂部函數簽名和接口指令? –

+0

請參閱此[鏈接](https://forums.xilinx.com/t5/Welcome-Join/How-to-get-random-bit-sequence-in-XSDK-from-HLS-IP/mp/763597# M44714) 'int PRBS_prj() { int start_state = 0xCD; int lfsr = start_state; bool bit; 無符號週期= 0; do /*抽頭:3,2和1; (lfsr >> 0)^(lfsr >> 2)^(lfsr >> 3)^(lfsr >> 4))& 1; printf(fsr >> 0)反饋多項式:x^3 + x^2 + 1 */ printf 「%d」,bit); lfsr =(lfsr >> 1)| (位「7」); ++期間; } while(lfsr!= start_state); 返回位; }' – Thaus

回答

0

看起來你實現的函數有一個位作爲它的返回值。這意味着它預計會在每次調用時生成一個位。如果每次調用都需要多個位,也許可以返回所需寬度的ap_uint

+0

感謝您的回覆。這意味着你告訴我使用** C++任意精度類型**編寫PRBS程序。 – Thaus

+0

是的,但是,如果您一次只需要64位或32位,則可以使用普通的C類型。 –

+0

我只想要32位或64位。在hls中,我得到了一系列位,而在UART中,我只通過HLS IP和XSDK之間的通信獲得單位返回。爲什麼我面臨這個問題?任何UART返回問題 – Thaus