那些年在FPGA踩過的坑(一)

1、Error(10028):Can’t resolve multiple constant drivers for net “ ” at **.v

兩個進程裏都有同一個條件判斷的話,會產生並行信號衝突的問題。

同一個信號不允許在多個進程中賦值,否則則爲多驅動。

進程的並行性決定了多進程不同能對同一個對象進行賦值。

時序邏輯和組合邏輯的計算

2、modesim找不到某某文件

1、例如lpm相關
解決方法:right click on the libraries window
goto new -> library
select map to existing library
name : LPM
find the 220model folder

3、網上FFT實例使用方法

1、解壓到相應文件夾

2、cd {D:/cv_fft_iff_natural_cosine_170/fft0/simulation/mentor}

3、運行tcl腳本:source msim_setup.tcl

局部修改內容的含義
注意
1、修改topname
2、添加自己的文件.v
3、添加需要的IP核相關文件

4、LD

重新加載文件設置

5、do wave.do

在波形窗口添加監視及

6、run -all

運行程序

4、跨時鐘域處理單元

暫無

5、高共模抑制比放大電路

https://www.eefocus.com/test-measurement/338394/p4

通過低通濾波器所得到的信號可能很微弱,所以加一級前置放大器對所獲取的信號進行放大,以期能夠得到更易於處理的信號。將放大器前置的目的有兩個:①使小輸入信號不被後期電路的噪聲所淹沒;②要防止濾波器電路的噪聲被放大。

對於測量放大電路的基本要求是:①測量放大電路的輸入電阻應與傳感器輸出阻抗相匹配;②穩定的放大倍數;③低噪聲;④低的輸入失調電壓和輸入失調電流,以及低的漂移;⑤足夠的帶寬和轉換速率;⑥高共模輸入範圍和高共模抑制比;⑦可調的閉環增益;⑧線性好、精度高;⑨成本低等;

目前廣泛應用的是高共模抑制比放大電路,如下圖所示:

該共模抑制比電路由三個集成運算放大器組成,其中爲兩個性能一致(主要是指輸入阻抗、共模抑制比和增益)的同相輸入通用集成運算放大器,構成平衡對稱(或稱同相併聯型)差動放大輸入級,構成雙端輸入單端輸出的輸出級,用來進一步抑制的共模信號,並適應接地負載的需要。

輸入級的輸出電壓,即運算放大器輸出之差爲,其差模增益

由以上公式可知,當性能一致時,輸入級的差動輸出及其差模增益只與差模輸入電壓有關,而其共模輸出、失調與漂移均在兩端相互抵消,因此電路具有良好的共模抑制能力,爲消除偏置電流等得影響,通常取。

關於放大器採用的是LM386,LM386是一個用於在低電壓消費類應用設計的功率放大器。內部增益爲20,輸入以地面爲參考,而輸出被自動偏置到電源電壓的一半。靜態功耗只有24毫瓦,LM386是電池操作的理想選擇。

6、FFT使用

1、已知數據
採樣頻率 Fs=
採樣點數 N=

2、待求數據
頻率 Fn = (n-1)Fs/N;
幅值 複數的平方根 Y = 根號(real²+imag²);sqrt(real(X).^2 + imag(X).^2)
(對稱,2倍關係)

相位 theta = arctan();弧度或者直接計算

3、負數求平方,位擴展問題,在位未擴展之前,取反後再計算。

6.1 Github上面DE2-115傅里葉變換例子

1、聲音頻譜轉換
https://github.com/Goshik92/FFTVisualizer

2、

6.1 fft函數的用法及關鍵問題詳解

fft函數的用法及關鍵問題詳解

(一)fft函數計算得到的Y是輸入信號x的頻譜嗎?如果不是還要經過怎樣的變換?爲什麼要除以N。

(二)如何計算Y對應的頻率f,並繪製(f,Y)頻譜圖?

(三)如何根據離散信號的長度確定n的數值?

7、低通濾波器

7.1、低通濾波器

Altera FIR 低通濾波器參數分割可以是,或空格

根據工作原理,頻譜分析儀大致可分爲模擬式和數字式兩大類,本設計是數字式頻譜分析儀,該分析儀先將所採集的信號通過一個低通濾波器進行濾波,然後將經濾波處理的模擬信號進行採樣量化,再通過放大

image

8、仿真時出現高阻態?????

通過modelsim進行模擬後,結果始終顯示爲高Z.
檢查數據初始化狀態

9、仿真時出現vsim-3033

該文件有錯誤,或軟件版本問題

10、Difference between“ >>” and“ >>> ”in verilog?

It is not similar to ==/===, if the left hand operand is signed then >>> performs sign extension.

reg signed [9:0] b = 10'sb11_0101_0101;
reg signed [9:0] a_signed;
reg        [9:0] a_unsigned; 

always_comb begin
  a_signed   = b >>> 2;
  a_unsigned = b >>  2;
  end
Result:

#a_signed   1111010101
#a_unsigned 0011010101

for example

a = 5'b10100;
b = a <<< 2; //b == 5'b10000
c = a >>> 2; //c == 5'b11101, 'cause sign bit was `1`
d = a <<  2; //d == 5'b10000
e = a >>  2; //e == 5'b00101
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章