混沌系統的fpga實現及實現過程中遇到的問題

2021-08-14 22:05:40 字數 1279 閱讀 7439

混沌系統是用定點數實現的,小數字20位,整數字15位。

在實現的過程中主要遇到了四個問題:

1 vivado引腳分配問題

2 自己在實現系統時,將系統輸入錯誤

3 混沌退化問題(由有限精度引起的,使原本混沌的系統退化為週期的系統)

4 定點數的常係數乘法問題

下面分別介紹下

1 vivado引腳分配問題

在vivado中,不進行引腳分配,不進行時鐘的限定,**的時鐘頻率會很高,導致時序不通過。

2 自己在實現系統時,將系統輸入錯誤

這個問題自己查了很長時間,差不過一天多吧!很低階的錯誤,但就是這個錯誤,都讓自己懷疑自己的智商了。

3 混沌退化問題(由有限精度引起的,使原本混沌的系統退化為週期的系統)

對於這個問題我想了幾個解決方案

1)加擾動,這是最簡單的方法

2)降低時鐘頻率(這肯定不行的)

3)用龍格庫塔演算法(之前用的是尤拉)

4)用system generator(不會)

還好之後用加擾動的方法解決了問題,**如下:

begin

state_i<=four;

if(noise_en)//這是計數其來使能的,當計數到5000時noise_en使能

add_noise<=},y_tmp[24:10]};

else

add_noise<=35'd0;

end

four://計算結果

begin

state_i<=five;

x_tmp <= x_tmp+},result_add00[54:30]}+add_noise;//加擾動

4 定點數的常係數乘法問題

這個問題是在實現超混沌時出現的,只是一開始沒發現。

由於超混沌系統裡有好幾個是常量,所以就考慮用移位的方式來實現乘法。但是實現之後發現一直錯誤,找了很長世間也沒發現問題。之後沒辦法就還是用乘法器實現。發現沒問題了。但之後用示波器看的時候發現w狀態量一直為零。把**認真看了幾遍發現沒問題。沒辦法,只能把相關的暫存器拿出來看,發現了問題。不過還是沒想到怎麼解決。直到今天突然看到y-6w,實際上應該是y*1-w*6,1在自己的**裡應該是1*2^20,6應該為6*2^20,而自己**裡是這樣的},mul_y0},就相當於將y除以了2^20,結果肯定有問題。

result_add03 <= },mul_y0}- result_gw_tmp;//這是錯誤的

result_add03 <= },mul_y0,20'd0} - result_gw_tmp;//這是改之後的

AM解調的FPGA實現

功能 am解調 平台 vivado 2016.4 和 matlab r2017a 簡單說明一下對資料取反的思路 如果是無符號數,則不存在符號位,也就是說資料都是正數,不需要取絕對值 如果是有符號數,通過檢測最高位的符號位,如果符號位是1,則表示資料是負數,對資料取反,如果符號位是0,則表示資料是正數...

FPGA筆記之 FPGA浮點運算的實現

ieee 754標準數值表示包括 浮點數,特殊值 零,無窮大,非標準數值,nan 單精度 雙精度 單精度擴充套件格式的浮點數。1 浮點格式。在ieee 754標準中,所有的浮點數都用二進位制模板表示 其中,s域表示符號位,e域表示指數,m域表示尾數 對數的一部分或小數 對於標準浮點數,預設總是存在1...

設計Soc並使用FPGA實現的流程及軟體簡介

soc即 system on a chip 將系統做成一塊晶元上。作為完整的系統,soc既要包括處理器核 匯流排 外設等硬體,又要包括處理器需要執行的指令,就涉及到了 硬體程式設計 和 軟體程式設計 本文將主要介紹 硬體程式設計 和 軟體程式設計 的概念和區別 設計soc並基於fpga實現的流程以及...