多普勒計程儀是根據聲波在水中的多普勒效應原理而制成的一種精密測速和計算航程的儀器,它是船用導航設備的重要組成之一。針對于多普勒計程儀的核心問題——頻率估計,本文提出了一種基于FPGA實現的多普勒測頻方案,它具有抗干擾能力強、運算速度快等特點。本論文主要是圍繞系統的測頻方案的設計與實現展開的。 本文主要研究工作包括:設計和調試基于FPGA的多普勒測頻系統的硬件電路;通過對測頻算法的研究,采用VHDL語言設計和實現系統的測頻算法和其它接口控制程序,并通過軟件仿真,測試設計的正確性。 測頻系統的硬件電路設計是本論文工作的主要部分之一,也是基于FPGA的多普勒測頻系統的核心部分。整個系統以FPGA作為主處理器,完成系統中所有的數字信號處理和外圍接口控制,同時,基于FPGA豐富的片內可編程邏輯資源和外部I/O資源,系統還擴展了豐富的通信接口(UART、USB和以太網接口)和顯示電路(LCD和LED),使系統便于與PC機進行數據交換和控制。 系統的軟件實現是本文工作的另一重要部分。本文通過對測頻算法的研究,完成了基于VHDL實現的過零檢測法和FFT算法,同時也實現了對接收機信號的自動增益控制、信號采集和與計算機的通信功能等。
上傳時間: 2013-04-24
上傳用戶:121212121212
由于其很強的糾錯性能和適合硬件實現的編譯碼算法,卷積編碼和軟判決維特比譯碼目前已經廣泛應用于衛星通信系統。然而隨著航天事業的發展,衛星有效載荷種類的增多和分辨率的不斷提高,信息量越來越大。如何在低信噪比的功率受限信道條件下提高傳輸速率成為目前亟待解決的問題。本論文結合在研項目,在編譯碼算法、編譯碼器的設計與實現、編譯碼器性能提高三個方面對卷積編碼和維特比譯碼進行了深入研究,并進一步介紹了使用VHDL語言和原理圖混合輸入的方式,實現一種(7,3/4)增信刪余方式的高速卷積編碼器和維特比譯碼器的詳細過程;然后將設計下載到XILINX的Virtex2 FPGA內部進行功能和時序確認,最終在整個數據傳輸系統中測試其性能。本文所實現的維特比譯碼器速率達160Mbps,遠遠高于目前國內此領域內的相關產品速率。 首先,論文具體介紹了卷積編碼和維特比譯碼的算法,研究卷積碼的各種參數(約束長度、生成多項式、碼率以及增信刪余等)對其譯碼性能的影響;針對項目需求,確定卷積編碼器的約束長度、生成多項式格式、碼率和相應的維特比譯碼器的回歸長度。 其次,論文介紹了編解碼器的軟、硬件設計和調試一根據已知條件,使用VHDL語言和原理圖混合輸入的方式設計卷積編碼和維特比譯碼的源代碼和原理圖,分別采用功能和電路級仿真,確定卷積編碼和維特比譯碼分別需要占用的資源,考慮卷積編碼器和維特比譯碼器的具體設計問題,包括編譯碼的基本結構,各個模塊的功能及實現策略,編譯碼器的時序、邏輯綜合等;根據軟件仿真結果,分別確定卷積編碼器和維特比譯碼器的接口、所需的FPGA器件選型和進行各自的印制板設計。利用卷積碼本身的特點,結合FPGA內部結構,采用并行卷積編碼和譯碼運算,設計出高速編譯碼器;對軟、硬件分別進行驗證和調試,并將驗證后的軟件下載到FPGA進行電路級調試。 最后,論文討論了卷積編碼和維特比譯碼的性能:利用已有的測試設備在整個數據傳輸系統中測試其性能(與沒有采用糾錯編碼的數傳系統進行比對);在信道中加入高斯白噪聲,模擬高斯信道,進行誤碼率和信噪比測試。
上傳時間: 2013-04-24
上傳用戶:mingaili888
現場可編程門陣列(FPGA)是一種可實現多層次邏輯器件。基于SRAM的FPGA結構由邏輯單元陣列來實現所需要的邏輯函數。FPGA中,互連線資源是預先定制的,這些資源是由各種長度的可分割金屬線,緩沖器和.MOS管實現的,所以相對于ASIC中互連線所占用的面積更大。為了節省芯片面積,一般都采用單個MOS晶體管來連接邏輯資源。MOS晶體管的導通電阻可以達到千歐量級,可分割金屬線段的電阻相對于MOS管來說是可以忽略的,然而它和地之間的電容達到了0.1pf[1]。為了評估FPGA的性能,用HSPICE仿真模型雖可以獲得非常精確的結果,但是基于此模型需要花費太多的時間。這在基于時序驅動的工藝映射和布局布線以及靜態時序分析中都是不可行的。于是,非常迫切地需要一種快速而精確的模型。 FPGA中連接盒、開關盒都是由MOS管組成的。FPGA中的時延很大部分取決于互連,而MOS傳輸晶體管在互連中又占了很大的比重。所以對于MOS管的建模對FPGA時延估算有很大的影響意義。對于MOS管,Muhammad[15]采用導通電阻來代替MOS管,然后用。Elmore[3]時延和Rubinstein[4]時延模型估算互連時延。Elmore時延用電路的一階矩來近似信號到達最大值50%時的時延,而Rubinstein也是通過計算電路的一階矩估算時延的上下邊界來估算電路的時延,然而他們都是用來計算RC互連時延。傳輸管是非線性器件,所以沒有一個固定的電阻,這就造成了Elmore時延和Rubinstein時延模型的過于近似的估算,對整體評估FPGA的性能帶來負面因素。 本論文提出快速而精確的現場可編程門陣列FPGA中的互連資源MOS傳輸管時延模型。首先從階躍信號推導出適合50%時延的等效電阻模型,然后在斜坡輸入的時候,給出斜坡輸入時的時延模型,并且給出等效電容的計算方法。結果驗證了我們精確的時延模型在時間上的開銷少的性能。 在島型FPGA中,單個傳輸管能夠被用來作為互連線和互連線之間的連接,或者互連線和管腳之間的連接,如VPR把互連線和管腳作為布線資源,管腳只能單獨作為輸入或者輸出管腳,以致于它們不是一個線網的起點就是線網的終點。而這恰恰忽略了管腳實際在物理上可以作為互連線來使用的情況(VPR認為dogleg現象本身對性能提高不多)。本論文通過對dogleg現象進行了探索,并驗證了在使用SUBSET開關盒的情況下,dogleg能提高FPGA的布通率。
上傳時間: 2013-07-24
上傳用戶:yezhihao
生物醫學信號是源于一個生物系統的一類信號,像心音、腦電、生物序列和基因以及神經活動等,這些信號通常含有與生物系統生理和結構狀態相關的信息,它們對這些系統狀態的研究和診斷具有很大的價值。信號拾取、采集和處理的正確與否直接影響到生物醫學研究的準確性,如何有效地從強噪聲背景中提取有用的生物醫學信號是信號處理技術的重要問題。 設計自適應濾波器對帶有工頻干擾的生物醫學信號進行濾波,從而消除工頻干擾,獲得最佳的濾波效果是本研究要解決的問題。生物醫學信號具有信號弱、噪聲強、頻率范圍較低、隨機性強等特點。由于心電(electrocardiogram,ECG)信號的確定性、穩定性、規則性都比其他生物信號高,便于準確評估和檢測濾波效果,本研究采用ECG信號作為原始的模板信號。 本研究將新的電子芯片技術與現代信號處理技術相結合,從過去單一的軟件算法研究,轉向軟件與硬件結合,從而提高自適應速度和精度,而且可以使系統的開發周期縮短、成本降低、容易升級和變更。 采用現場可編程邏輯器件(Field Programmable Gate Array,FPGA)作為新的ECG快速提取算法的硬件載體,加快信號處理的速度。為了將ECG快速提取算法轉換為常用的適合于FPGA芯片的定點數算法,研究中詳細分析了定點數的量化效應對自適應噪聲消除器的影響,以及對浮點數算法和定點數算法的復合自適應濾波器的各種參數的選擇,如步長因子和字長選擇。研究中以定點數算法中的步長因子和字長選擇,作為FPGA設計的基礎,利用串并結合的硬件結構實現自適應濾波器,并得到了預期的效果,準確提取改善后的ECG信號。 研究中,在MATLAB(Matrix Laboratry)軟件的環境下模擬,選取帶有50Hz工頻干擾的不同信噪比的ECG原始信號,在浮點數情況下,原始信號通過采用最小均方LMS(LeastMean Squares)算法的浮點數自適應濾波器后,根據信噪比的改善和收斂速度,確定不同的最佳μ值,并在定點數情況下,在最佳μ值的情況下,原始信號通過采用LMs算法的定點數自適應濾波器后,根據信噪比的改善效果和采用硬件的經濟性,確定最佳的定點數。并了解LMS算法中步長因子、定點數字長值對信號信噪比、收斂速度和硬件經濟性的影響。從而得出針對含有工頻干擾的不同信噪比的原始ECG,應該采用什么樣的μ值和什么樣的定點數才能對原始ECG的改善和以后的硬件實現取得最佳的效果,并根據所得到的數據和結果,在FPGA上實現自適應濾波器,使自適應濾波器能對帶有工頻干擾的ECG原始信號有最佳的濾波效果。
上傳時間: 2013-04-24
上傳用戶:gzming
pid
上傳時間: 2013-11-10
上傳用戶:mhp0114
特點: 精確度0.1%滿刻度 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A|/ 16 BIT類比輸出功能 輸入與輸出絕緣耐壓2仟伏特/1分鐘(input/output/power) 寬范圍交直流兩用電源設計 尺寸小,穩定性高
上傳時間: 2014-12-23
上傳用戶:ydd3625
特點(FEATURES) 精確度0.1%滿刻度 (Accuracy 0.1%F.S.) 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A| (Math functioA+B/A-B/AxB/A/B/A&B(Hi&Lo)/|A|/etc.....) 16 BIT 類比輸出功能(16 bit DAC isolating analog output function) 輸入/輸出1/輸出2絕緣耐壓2仟伏特/1分鐘(Dielectric strength 2KVac/1min. (input/output1/output2/power)) 寬范圍交直流兩用電源設計(Wide input range for auxiliary power) 尺寸小,穩定性高(Dimension small and High stability)
上傳時間: 2013-11-24
上傳用戶:541657925
/*--------- 8051內核特殊功能寄存器 -------------*/ sfr ACC = 0xE0; //累加器 sfr B = 0xF0; //B 寄存器 sfr PSW = 0xD0; //程序狀態字寄存器 sbit CY = PSW^7; //進位標志位 sbit AC = PSW^6; //輔助進位標志位 sbit F0 = PSW^5; //用戶標志位0 sbit RS1 = PSW^4; //工作寄存器組選擇控制位 sbit RS0 = PSW^3; //工作寄存器組選擇控制位 sbit OV = PSW^2; //溢出標志位 sbit F1 = PSW^1; //用戶標志位1 sbit P = PSW^0; //奇偶標志位 sfr SP = 0x81; //堆棧指針寄存器 sfr DPL = 0x82; //數據指針0低字節 sfr DPH = 0x83; //數據指針0高字節 /*------------ 系統管理特殊功能寄存器 -------------*/ sfr PCON = 0x87; //電源控制寄存器 sfr AUXR = 0x8E; //輔助寄存器 sfr AUXR1 = 0xA2; //輔助寄存器1 sfr WAKE_CLKO = 0x8F; //時鐘輸出和喚醒控制寄存器 sfr CLK_DIV = 0x97; //時鐘分頻控制寄存器 sfr BUS_SPEED = 0xA1; //總線速度控制寄存器 /*----------- 中斷控制特殊功能寄存器 --------------*/ sfr IE = 0xA8; //中斷允許寄存器 sbit EA = IE^7; //總中斷允許位 sbit ELVD = IE^6; //低電壓檢測中斷控制位 8051
上傳時間: 2013-10-30
上傳用戶:yxgi5
TLC2543是TI公司的12位串行模數轉換器,使用開關電容逐次逼近技術完成A/D轉換過程。由于是串行輸入結構,能夠節省51系列單片機I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應用。 TLC2543的特點 (1)12位分辯率A/D轉換器; (2)在工作溫度范圍內10μs轉換時間; (3)11個模擬輸入通道; (4)3路內置自測試方式; (5)采樣率為66kbps; (6)線性誤差±1LSBmax; (7)有轉換結束輸出EOC; (8)具有單、雙極性輸出; (9)可編程的MSB或LSB前導; (10)可編程輸出數據長度。 TLC2543的引腳排列及說明 TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1 TLC2543電路圖和程序欣賞 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上傳時間: 2013-11-19
上傳用戶:shen1230
#include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar unsigned char uint a,b,c,d=0; void delay(c) { for for(a=0;a<c;a++) for(b=0;b<12;b++); }; uchar tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
上傳時間: 2013-10-21
上傳用戶:13788529953