便攜式功率分析儀設計-----硬件設計(四)
3.4 FPGA內部電路設計本設計
本文引用地址:http://m.butianyuan.cn/article/175061.htm硬件電路設計采用了1片F(xiàn)PGA,芯片型號為Altera公司的EP1C6Q240C8 。其作用主要分為數(shù)據采集控制和頻率測量控制兩個部分。數(shù)據采集控制部分用于實現(xiàn)ARM寄存器基接口的配置,通道控制,數(shù)據采集,觸發(fā)與存儲器讀寫控制等;頻率測量控制部分用于利用前端電路已經分頻整形的信號對給定門寬進行計數(shù),從而等到該信號的頻率值。這里先對數(shù)據采樣部分的FPGA內部電路進行介紹,頻率測量部分的介紹見后章。
數(shù)據采集控制部分的FPGA程序主要完成與ARM芯片接口的的配置工作;對寄存器進行譯碼;控制觸發(fā)電平,實現(xiàn)觸發(fā)功能;FIFO讀寫控制;時鐘頻率選擇;采樣時鐘合成與控制;寄存器讀寫操作。以下分別對各部分的功能進行介紹。
3.4.1地址譯碼電路及控制信號
模擬通道中的衰減控制信號,以及對FIFO狀態(tài)的檢測信號等,都是由ARM芯片對其數(shù)據、地址總線的讀寫來實現(xiàn)的,這就需要為每個端口分配地址。本設計中,由于是利用LPC2138的兩個通用I/O口,模擬讀寫控制線,由于有獨立的讀寫標志,因此需要4根地址線譯碼,進行端口讀寫。
FPGA中與ARM芯片(LPC2138)接口的寫操作地址譯碼電路。其中,/WR為ARM芯片的寫使能信號,低有效。當寫外部存儲器時,/WR信號變?yōu)榈停?WR信號的上升沿時,ARM外部數(shù)據、地址總線上的數(shù)據都是很穩(wěn)定的。而且地址總線上的數(shù)據比數(shù)據總線上的數(shù)據先有效。因此,我們可以先對外部地址總線上的數(shù)據利用譯碼器進行譯碼,等到/WR信號有效時,利用/WR信號的上升沿對外部數(shù)據總線上的數(shù)據進行鎖存,完成對外部存儲器的一次寫操作。
其中,寫寄存器部分主要由74374構成,實現(xiàn)寄存器寫操作。送寫的數(shù)據包括觸發(fā)字、FIFO狀態(tài)控制字、DAC控制字、MAX4141通道選擇字等控制字。
同樣在ARM讀操作中,/RD為ARM芯片的輸出時鐘信號,低有效;當每執(zhí)行一次讀操作時/RD產生一個讀時鐘信號,同時ARM外部數(shù)據總線上的數(shù)據在兩個讀時鐘周期內有效。而且地址總線上的數(shù)據比數(shù)據總線上的數(shù)據先有效。因此,我們可以先對外部地址總線上的數(shù)據利用譯碼器進行譯碼,等到/RD讀時鐘信號有效時,選通相應的緩沖器,從而完成對外部存儲器的一次讀操作。
其中,讀寄存器部分主要由74244構成,完成寄存器讀操作,包括讀取FIFO狀態(tài)字、存儲在FIFO中的ADC采集的數(shù)據等。
3.4.2數(shù)字觸發(fā)電路
功率測量中,為了得到檢波后脈沖的峰值,需要設置觸發(fā)電平,獲得信號的峰值。為了避免毛刺干擾的影響,觸發(fā)電路設計中選用窗口電路的設計方法。并選用上升沿/下降沿觸發(fā)。具體觸發(fā)電平大小的設置,根據于采樣得到信號的峰值,如下圖3-18所示,觸發(fā)電路由兩個比較器、選擇器和觸發(fā)器等組成。觸發(fā)電平triglev小于triglev1,構成窗口觸發(fā)的兩個電平。第一路比較器實現(xiàn)觸發(fā)電平triglev和采樣得到的信號值比較,當triglev小于此時的信號值,則第二路經過比較器輸出的信號被選通到輸出端。第二路比較器實現(xiàn)觸發(fā)電平triglev1和采樣信號比較,當信號高于triglev1則輸出端置高。因此,trig_or比較器的輸出為采樣信號的整形后信號,在后端的trig_s標志為用戶提供上升沿/下降沿觸發(fā)方式的選擇。從而實現(xiàn)窗口觸發(fā)。
3.4.3數(shù)據的存儲與控制
A/D采樣出來的數(shù)據,是隨采樣時鐘和被測信號的變化而變化的,要能夠再現(xiàn)被測信號,必須要把每次采集的數(shù)據存入緩存器中,這里介紹的FIFO就是一個典型的緩存器。FIFO是一個先進先出的存儲器,可同時對存儲空間進行讀寫,沒有地址線,第一個讀出來的數(shù)據是第一個寫進去的數(shù)據,它有現(xiàn)成的集成芯片。由于EP1C6Q240片內有92160bits的存儲空間,因此本設計采用ALTERA公司提供的宏單元庫MEGA_LPM中提供的FIFO庫文件(LPM_FIFO_DC),將FIFO做在FPGA中。對應AD9480的存儲主通道信號采樣值的FIFO存儲深度設為1024,單位為8bits,生成的FIFO如圖3-19所示。
生成的FIFO有一個寫使能信號wrreq,一個寫時鐘信號wrclk,一個讀使能信號rdreq,一個讀時鐘信號rdclk,一個清除端aclr,8bits數(shù)據輸入端data[7……0]和8bits數(shù)據輸出端q[];同時還有兩個狀態(tài)端:wrfull(FIFO滿)和rdempty(FIFO空),F(xiàn)IFO被寫滿時wrfull=1,當FIFO被讀空時rdempty=1.如圖3-19中還使用到一個數(shù)據輸出端wrusedw[9..0],該端口在每一個FIFO寫時鐘到來是更新當前FIFO以寫入數(shù)據數(shù)量,這將在做預觸發(fā)方式時使用。
這里之所以不用一般并行RAM而用FIFO主要有如下兩個原因:一方面是它不用地址線,便于電路的連接和控制;更重要的是它可以同時進行讀寫操作,這樣在做預觸發(fā)功能時是非常方便的。雖然用并行RAM將地址計數(shù)器做成一個環(huán)行計數(shù)器也可以實現(xiàn),這樣就增加了FPGA內部的資源,也使電路復雜化了。
接地電阻相關文章:接地電阻測試方法
評論