本文針對應(yīng)用于軍用直升機上的Doppler/SINS組合導(dǎo)航系統(tǒng)對導(dǎo)航計算機高精度、高性能的要求,設(shè)計出一種基于DSP(TMS320C6713)和FPGA(Spartan-3E XC3S500E) 協(xié)同合作的機載導(dǎo)航計算機系統(tǒng)。在分析Doppler/SINS組合導(dǎo)航系統(tǒng)模型的特點和系統(tǒng)對導(dǎo)航計算機的需求后,提出了基于DSP和FPGA的機載導(dǎo)航計算機整體設(shè)計方案,該方案采用DSP負責(zé)導(dǎo)航解算,利用FPGA強大的內(nèi)部資源擴展系統(tǒng)的通信接口,完成外圍通信模塊控制信號的整合。在導(dǎo)航計算機整體設(shè)計方案,包括硬件設(shè)計方案和軟件設(shè)計方案確立的基礎(chǔ)上,首先對 DSP和FPGA芯片進行選型,其次對實現(xiàn)各個功能模塊的關(guān)鍵技術(shù)進行研究和開發(fā),包括基于FPGA的數(shù)據(jù)通信模塊、基于DSP的處理器模塊以及數(shù)據(jù)存儲模塊,開發(fā)過程中做了大量的仿真和驗證,最后對系統(tǒng)進行綜合測試和聯(lián)調(diào),并進行了地面跑車實驗。實驗結(jié)果證明:系統(tǒng)能夠?qū)崟r采集IMU角速率和加速度、Doppler雷達的速度等信息,能夠?qū)MU、Doppler、GPS、航姿系統(tǒng)、高度表等信息進行導(dǎo)航解算,生成當(dāng)前位置、姿態(tài)等導(dǎo)航數(shù)據(jù),并能夠完成與機載電子設(shè)備間的數(shù)據(jù)通信與控制。多次的聯(lián)調(diào)和跑車實驗結(jié)果證明,機載導(dǎo)航計算機達到了預(yù)期設(shè)計的目的,可以有效提高導(dǎo)航系統(tǒng)的運算精度,實現(xiàn)了高性能、小體積、低成本的要求,系統(tǒng)具有較高的應(yīng)用價值。關(guān)鍵詞:Doppler/SINS組合導(dǎo)航,導(dǎo)航計算機,DSP,FPGA
標(biāo)簽: FPGA DSP 機載 導(dǎo)航計算機
上傳時間: 2013-07-25
上傳用戶:cc1915
C++完美演繹 經(jīng)典算法 如 /* 頭文件:my_Include.h */ #include <stdio.h> /* 展開C語言的內(nèi)建函數(shù)指令 */ #define PI 3.1415926 /* 宏常量,在稍后章節(jié)再詳解 */ #define circle(radius) (PI*radius*radius) /* 宏函數(shù),圓的面積 */ /* 將比較數(shù)值大小的函數(shù)寫在自編include文件內(nèi) */ int show_big_or_small (int a,int b,int c) { int tmp if (a>b) { tmp = a a = b b = tmp } if (b>c) { tmp = b b = c c = tmp } if (a>b) { tmp = a a = b b = tmp } printf("由小至大排序之后的結(jié)果:%d %d %d\n", a, b, c) } 程序執(zhí)行結(jié)果: 由小至大排序之后的結(jié)果:1 2 3 可將內(nèi)建函數(shù)的include文件展開在自編的include文件中 圓圈的面積是=201.0619264
標(biāo)簽: my_Include include define 3.141
上傳時間: 2014-01-17
上傳用戶:epson850
【二項式係數(shù) 運算】Dev-C++ 學(xué)習(xí),運用Dynamic Programming 動態(tài)規(guī)劃計算
標(biāo)簽: Dev-C
上傳時間: 2016-09-19
上傳用戶:冇尾飛鉈
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定義 sfr WDT_CONTR = 0xe1;//stc2051的看門狗?????? /**********全局常量************/ //寫卡的命令 #define write_command0 0//寫密碼 #define write_command1 1//寫配置字 #define write_command2 2//密碼寫數(shù)據(jù) #define write_command3 3//喚醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //讀卡的時間參數(shù)us #define ts_min 250//270*11.0592/12=249//取近似的整數(shù) #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10調(diào)整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中斷處理:采用查詢的方法讀卡時關(guān)所有中斷****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI總線 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//測試綠燈 sbit led_light1 = P1^5;//測試紅燈 sbit led_light_ok = P1^1;//讀卡成功標(biāo)志 sbit fengmingqi = P1^5; /***********全局變量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密碼 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存儲卡上用戶數(shù)據(jù)(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收數(shù)組ram uchar command; //第一個命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //緩存定時值,因用同一個定時器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //緩存定時值,因用同一個定時器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函數(shù)原型*****************/ //讀寫操作 void f_readcard(void);//全部讀出1~7 AOR喚醒 void f_writecard(uchar x);//根據(jù)命令寫不同的內(nèi)容和操作 void f_clearpassword(void);//清除密碼 void f_changepassword(void);//修改密碼 //功能子函數(shù) void write_password(uchar data *data p);//寫初始密碼或數(shù)據(jù) void write_block(uchar x,uchar data *data p);//不能用通用指針 void write_bit(bit x);//寫位 /*子函數(shù)區(qū)*****************************************************/ void delay_2(uint x) //延時,時間x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能頻繁的復(fù)位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允許接收 //SCON =0x50; //01010000B:10位異步收發(fā),波特率可變,SM2=0不用接收到有效停止位才RI=1, //REN=1允許接收 TMOD = 0x21; //定時器1 定時方式2(8位),定時器0 定時方式1(16位) TCON = 0x40; //設(shè)定時器1 允許開始計時(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //啟動定時器 WDT_CONTR = 0x3c;//使能看門狗 p_U2270B_Standby = 0;//單電源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//讀卡 { EA = 0;//全關(guān),防止影響跳變的定時器計時 WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用喚醒功能來防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作碼讀0頁 write_bit(0); write_password(&bankdata[24]);//密碼block7 p_U2270B_CFE =1 ;// delay_2(516);//編程及確認時間5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一個穩(wěn)定的低電平?超時判斷? while(!p_U2270B_OutPut);//等待上升沿的到來同步信號檢測1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定時器晚啟動10個周期 //同步頭 if((324 < a.W) && (a.W < 353)) ;//檢測同步信號1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //讀0~7塊的數(shù)據(jù) for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8個位 { //等待下降沿的到來 while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再賦值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//讀卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//寫卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//寫密碼:初始化密碼 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 for(i = 0;i < 35;i++) { write_bit(1);//寫數(shù)據(jù)位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//測試使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密碼存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡參數(shù):初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密碼寫數(shù)據(jù) { uchar data*data p; p = &bankdata[24]; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_password(p);//發(fā)口令 write_bit(0);//寫鎖定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//寫數(shù)據(jù) } else if(x == write_command3)//aor //喚醒 { //cominceptbuff[1]操作碼10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密碼 p_U2270B_CFE = 1;//此時數(shù)據(jù)不停的循環(huán)傳出 } else //停止操作碼 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密碼 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密碼 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作碼10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//寫新配置參數(shù):pwd=0 //密碼無效:即清除密碼 DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密碼 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密碼 DATA = 0x80;//操作碼10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//寫新密碼 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密碼存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函數(shù)***********************************/ void write_bit(bit x)//寫一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延時448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫0 } } /*******************寫一個block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0數(shù)據(jù) { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //讀卡 f_writecard(command1); //寫卡 f_clearpassword(); //清除密碼 f_changepassword(); //修改密碼 } }
標(biāo)簽: 12345
上傳時間: 2017-10-20
上傳用戶:my_lcs
在伺服系統(tǒng)中,為了實現(xiàn)高精度的控制,往往需要實時地檢測出電動機轉(zhuǎn)子的位置。用來檢測電動機轉(zhuǎn)子位置的角度傳感器主要有光電編碼器和旋轉(zhuǎn)變壓器。光電編碼器雖然能夠達到很高的精度,但是它的抗干擾性差,不宜應(yīng)用在條件惡劣的場合中;相比較而言,旋轉(zhuǎn)變壓器(簡稱旋變)由于結(jié)構(gòu)簡單,堅固耐用,抗干擾性強,能夠應(yīng)用在各種條件惡劣的場合中,所以獲得了越來越廣泛的應(yīng)用。 本文采用的旋變樣機是一種新型的磁阻式旋轉(zhuǎn)變壓器。分析了它的定轉(zhuǎn)子結(jié)構(gòu)、定子繞組的連接方式以及轉(zhuǎn)子形狀的優(yōu)化;并在此基礎(chǔ)上,推導(dǎo)出了它的正余弦輸出反電勢的表達式;最后在電磁場分析軟件Ansoft中,以樣機為原型建立了仿真模型,分析了它內(nèi)部的電磁場分布以及正余弦輸出反電勢的波形。 其次,本文設(shè)計了一種以DSP為核心的R2D電路系統(tǒng)。它以振蕩電路產(chǎn)生的正弦波電壓信號作為旋變的激勵信號,加上相關(guān)的外圍電路,構(gòu)成了旋轉(zhuǎn)變壓器一數(shù)字轉(zhuǎn)換器,解算出了旋變的軸角θ;并在此基礎(chǔ)上,分析了產(chǎn)生角度解算誤差的各種因素,同時計算出了旋變的轉(zhuǎn)速n。 最后,在上述解算方案的基礎(chǔ)上,本文又給出了第二種解算方案,即:DSP產(chǎn)生的方波經(jīng)過濾波之后作為旋變的激勵信號,解算出了旋變的軸角θ;然后比較了這兩種解算方案的優(yōu)缺點,重點分析了激勵信號中的諧波分量對正余弦輸出反電勢以及角度解算的影響。
標(biāo)簽: R2D 旋轉(zhuǎn)變壓器 電路
上傳時間: 2013-04-24
上傳用戶:pioneer_lvbo
ASIC對產(chǎn)品成本和靈活性有一定的要求.基于MCU方式的ASIC具有較高的靈活性和較低的成本,然而抗干擾性和可靠性相對較低,運算速度也受到限制.常規(guī)ASIC的硬件具有速度優(yōu)勢和較高的可靠性及抗干擾能力,然而不是靈活性較差,就是成本較高.與傳統(tǒng)硬件(CHW)相比,具有一定可配置特性的場可編程門陣列(FPGA)的出現(xiàn),使建立在可再配置硬件基礎(chǔ)上的進化硬件(EHW)成為智能硬件電路設(shè)計的一種新方法.作為進化算法和可編程器件技術(shù)相結(jié)合的產(chǎn)物,可重構(gòu)FPGA的研究屬于EHW的研究范疇,是研究EHW的一種具體的實現(xiàn)方法.論文認為面向分類的專用類可重構(gòu)FPGA(ASR-FPGA)的研究,可使可重構(gòu)電路粒度劃分的針對性更強、設(shè)計更易實現(xiàn).論文研究的可重構(gòu)FPGA的BCH通訊糾錯碼進化電路是一類ASR-FPGA電路的具體方法,具有一定的實用價值.論文所做的工作主要包括:(1)BCH編譯碼電路的設(shè)計——求取實驗用BCH碼的生成多項式和校驗多項式及其相應(yīng)的矩陣并構(gòu)造實驗用BCH碼;(2)建立基于可重構(gòu)FPGA的基核——構(gòu)造具有可重構(gòu)特性的硬件功能單元,以此作為可重構(gòu)BCH碼電路的設(shè)計基礎(chǔ);(3)構(gòu)造實現(xiàn)可重構(gòu)BCH糾錯碼電路的方法——建立可重構(gòu)糾錯碼硬件電路算法并進行實驗驗證;(4)在可重構(gòu)糾錯碼電路基礎(chǔ)上,構(gòu)造進化硬件控制功能塊的結(jié)構(gòu),完成各進化RLA控制模塊的驗證和實現(xiàn).課題是將可重構(gòu)BCH碼的編譯碼電路的實現(xiàn)作為一類ASR-FPGA的研究目標(biāo),主要成果是根據(jù)可編程邏輯電路的特點,選擇一種可編程樹的電路模型,并將它作為可重構(gòu)FPGA電路的基核T;通過對循環(huán)BCH糾錯碼的構(gòu)造原理和電路結(jié)構(gòu)的研究,將基核模型擴展為能滿足糾錯碼電路需要的糾錯碼基本功能單元T;以T作為再劃分的基本單元,對FPGA進行"格式化",使T規(guī)則排列在FPGA上,通過對T的控制端的不同配置來實現(xiàn)糾錯碼的各個功能單元;在可重構(gòu)基核的基礎(chǔ)上提出了糾錯碼重構(gòu)電路的嵌套式GA理論模型,將嵌套式GA的染色體串作為進化硬件描述語言,通過轉(zhuǎn)換為相應(yīng)的VHDL語言描述以實現(xiàn)硬件電路;采用RLA模型的有限狀態(tài)機FSM方式實現(xiàn)了可重構(gòu)糾錯碼電路的EHW的各個控制功能塊.在實驗方面,利用Xilinx FPGA開發(fā)系統(tǒng)中的VHDL語言和電路圖相結(jié)合的設(shè)計方法建立了循環(huán)糾錯碼基核單元的可重構(gòu)模型,進行循環(huán)糾錯BCH碼的電路和功能仿真,在Xilinx公司的Virtex600E芯片進行了FPGA實現(xiàn).課題在研究模型上選取的是比較基本的BCH糾錯碼電路,立足于解決基于可重構(gòu)FPGA核的設(shè)計的基本問題.課題的研究成果及其總結(jié)的一套ASR-FPGA進化硬件電路的設(shè)計方法對實際的進化硬件設(shè)計具有一定的實際指導(dǎo)意義,提出的基于專用類基核FPGA電路結(jié)構(gòu)的研究方法為新型進化硬件的器件結(jié)構(gòu)的設(shè)計也可提供一種借鑒.
上傳時間: 2013-07-01
上傳用戶:myworkpost
隨著社會的進步,經(jīng)濟的發(fā)展以及我國入世以后汽車行業(yè)的迅速發(fā)展,使得國內(nèi)交通車輛與日劇增,隨之帶來的交通擁擠、交通堵塞、車輛盜竊等一系列問題成為人們生活中最直接的安全隱患。運用無線通信技術(shù)、ARM技術(shù)和GPS定位技術(shù)的車輛監(jiān)控系統(tǒng)可以有效的解決這些問題,滿足運輸效率和安全保障的需要,并且?guī)順O大的經(jīng)濟效益和社會效益。 通過對車輛監(jiān)控系統(tǒng)和相關(guān)技術(shù)的研究與分析,本文提出了基于ARM和GPS的車輛監(jiān)控系統(tǒng)研究。與傳統(tǒng)的單片機控制的車輛監(jiān)控系統(tǒng)相比,該系統(tǒng)克服了單片機系統(tǒng)因其功能簡單、無操作系統(tǒng)、程序移植性差而只能滿足簡單控制的缺點,能實現(xiàn)復(fù)雜任務(wù)的監(jiān)控,例如顯示復(fù)雜的電子地圖、數(shù)據(jù)進行復(fù)雜計算、高端產(chǎn)品甚至有網(wǎng)絡(luò)互聯(lián)和Web瀏覽功能等等。同時該系統(tǒng)采用了GPRS無線通訊方式,具有資源利用率高、傳輸速率高、計費合理等特點,解決了以往采用SMS短消息通訊技術(shù)中存在的通訊費用高、消息延時和消息丟失等問題,提高了系統(tǒng)的實時性和可靠性。 論文首先介紹了在車輛監(jiān)控系統(tǒng)中應(yīng)用的GPS全球衛(wèi)星定位技術(shù)和GPRS通用無線分組業(yè)務(wù),在GPS定位技術(shù)中介紹了GPS系統(tǒng)組成、GPS信號和編碼、定位原理以及GPS誤差;在GPRS通訊技術(shù)中介紹了GPRS的概念、GPRS網(wǎng)絡(luò)的總體結(jié)構(gòu)、GPRS的主要優(yōu)點及發(fā)展動向。 論文隨后分為車輛監(jiān)控系統(tǒng)總體結(jié)構(gòu)與功能、車載端的研究與設(shè)計、監(jiān)控中心的研究與數(shù)據(jù)庫設(shè)計三大部分進行介紹。車輛監(jiān)控系統(tǒng)由車載端、監(jiān)控中心和兩者之間的通訊網(wǎng)絡(luò)三部分組成,車載端主要由GPS定位模塊、GPRS通信模塊和ARM數(shù)據(jù)處理與控制模塊這三大模塊構(gòu)成;監(jiān)控中心包括Internet接入設(shè)備、中心服務(wù)器、監(jiān)控端計算機以及一些輔助設(shè)備等。車載端分布在各個移動車輛上,負責(zé)接受OPS衛(wèi)星定位信息,通過數(shù)據(jù)控制處理器解算出車輛所處的位置坐標(biāo),坐標(biāo)數(shù)據(jù)經(jīng)過處理后通過GPRS模塊,最后將數(shù)據(jù)通過通訊網(wǎng)絡(luò)GPRS發(fā)送到監(jiān)控中心的信息服務(wù)器,信息服務(wù)器將收到的車臺數(shù)據(jù)經(jīng)過預(yù)處理之后分發(fā)給監(jiān)控終端。
標(biāo)簽: ARM GPS 車輛監(jiān)控 系統(tǒng)研究
上傳時間: 2013-06-14
上傳用戶:wang0123456789
由于全球定位系統(tǒng)在航天、航空、航海、海洋上程、大地測量、陸地導(dǎo)航以及軍事上的大量運用及其廣闊的應(yīng)用前景,使得GPS接收機系統(tǒng)成為國內(nèi)外相關(guān)領(lǐng)域競相研究的對象。GPS系統(tǒng)的用戶部分主要是各種型號的GPS接收機。所以GPS接收機中的微處理器的運算能力和功耗直接影響整機的性能。 本文所研究的是基于ARM微處理器和μC/OS—Ⅱ的嵌入式系統(tǒng)開發(fā)及其在GPS接收機中的應(yīng)用。介紹了OPS接收機設(shè)計原理,分析了接收機硬件模塊的組成和功能,設(shè)計了由FPGA和ARM完成基帶信號處理及導(dǎo)航解算的接收機,建立了基于ARM和μC/OS—Ⅱ的GPS接收機嵌入式硬件開發(fā)平臺。研究了嵌入式實時操作系統(tǒng)μC/OS—Ⅱ,分析了其內(nèi)核的組成結(jié)構(gòu):與處理器無關(guān)代碼、處理器相關(guān)代碼、與應(yīng)用相關(guān)代碼,并重點分析和配置了其中與處理器相關(guān)和與應(yīng)用相關(guān)的代碼部分,最終將其成功移植到ARM LPC2290微處理器上。建立了基于ARM LPC2290和μC/OS—Ⅱ的嵌入式系統(tǒng)軟件編譯和調(diào)試的交叉環(huán)境,設(shè)計了運行在此環(huán)境下的中斷和多任務(wù)來實現(xiàn)接收機信號處理、導(dǎo)航解算及顯示等功能,最終完成了基于ARM和μC/OS—Ⅱ的GPS接收機軟應(yīng)用件設(shè)計。 總之,本文從研究嵌入式系統(tǒng)的軟、硬件設(shè)計及其應(yīng)用著手,掌握了嵌入式系統(tǒng)開發(fā)的核心技術(shù),研制了基于ARM嵌入式開發(fā)平臺的GPS接收機。
標(biāo)簽: ARM GPS 嵌入式系統(tǒng) 收機設(shè)計
上傳時間: 2013-04-24
上傳用戶:buffer
GPS全球定位系統(tǒng)是美國國防部為軍事目的而建立的衛(wèi)星導(dǎo)航系統(tǒng),其主要目的是解決海上、陸地和空中運載工具的導(dǎo)航定位問題。GPS作為新一代衛(wèi)星導(dǎo)航系統(tǒng),不僅具有全球、全天候、連續(xù)、高精度導(dǎo)航與定位能力,而且具有優(yōu)良的抗干擾性和保密性。因此,發(fā)展全球定位系統(tǒng)是當(dāng)今導(dǎo)航技術(shù)現(xiàn)代化的一個重要標(biāo)志。在GPS接收機中,為了得到導(dǎo)航電文并對其進行解算,要完成復(fù)雜的信號處理過程。其中,怎樣捕獲到衛(wèi)星信號,并對C/A碼進行跟蹤是研制GPS接收機的重要問題之一。本文在對GPS信號的結(jié)構(gòu)進行深入的分析后,結(jié)合FPGA的特點,對算法進行設(shè)計及優(yōu)化后,給出了相應(yīng)的仿真。內(nèi)容主要包括以下幾個方面: 1.對GPS信號結(jié)構(gòu)的產(chǎn)生原理進行了深入地分析,并對GPS信號的調(diào)制機理進行詳細地闡述。 2.在GPS信號的捕獲方面,采用了基于FFT頻域的快速捕獲的方法,即將接收到的GPS信號先利用快速傅立葉變換(FFT)變換到頻域,在頻域完成相應(yīng)的運算后,再利用傅立葉反變換(IFFT)變換到時域。從而大大減少了計算量,加快了信號捕獲的速度,提高了捕獲性能。 3.在C/A碼跟蹤部分,本文采用了非相干延遲鎖定環(huán)對C/A碼進行跟蹤。來自載波跟蹤環(huán)路的本地載波將輸入的信號變成基帶信號,然后分別和本地碼的三個不同相位序列進行相乘,將相乘結(jié)果進行累加,經(jīng)過處理將得到碼相位和當(dāng)前的載波頻率送到載波跟蹤環(huán)路。 4.載波跟蹤環(huán),本文采用的是科斯塔斯環(huán)。載波跟蹤環(huán)和碼跟蹤環(huán)在結(jié)構(gòu)上相似,故本文只對關(guān)鍵的載波NCO進行了仿真。 本文的創(chuàng)新點主要是使用FPGA對整個GPS信號的捕獲及C/A碼的跟蹤進行設(shè)計。此外,根據(jù)FPGA的特點,在不改變外部硬件設(shè)計的前提下,改變相應(yīng)的IP核或相關(guān)的VHDL程序就可對系統(tǒng)進行各種優(yōu)化設(shè)計,以適應(yīng)不同類型的GPS接收機的不同功能。
上傳時間: 2013-06-27
上傳用戶:哇哇哇哇哇
由于旋轉(zhuǎn)變壓器的高精度高可靠性等特點,廣泛的應(yīng)用于如航空、航天、船舶、兵器、雷達、通訊等領(lǐng)域。旋轉(zhuǎn)變壓器輸出模擬量交流信號,經(jīng)過數(shù)字處理轉(zhuǎn)換為數(shù)字角度信號才能進入計算機或其他控制系統(tǒng),而這種數(shù)字處理比較復(fù)雜,采用專用的旋轉(zhuǎn)變壓器解碼芯片想達到理想的精度通常需要較高的成本,限制了它在其他領(lǐng)域的應(yīng)用。傳統(tǒng)的角測量系統(tǒng)面臨的問題有:體積、重量、功耗偏大,調(diào)試、誤差補償試驗復(fù)雜,費用較高。 現(xiàn)場可編程門陣列(FPGA)是近年來迅速發(fā)展起來的新型可編程器件。隨著它的不斷應(yīng)用和發(fā)展,也使電子設(shè)計的規(guī)模和集成度不斷提高。同時也帶來了電子系統(tǒng)設(shè)計方法和設(shè)計思想的不斷推陳出新。 本文的目的是研究利用FPGA實現(xiàn)旋轉(zhuǎn)變壓器的硬件解碼算法,設(shè)計基于FPGA的旋轉(zhuǎn)變壓器解碼系統(tǒng)。 在本文所設(shè)計的系統(tǒng)中,通過FPGA芯片產(chǎn)生旋轉(zhuǎn)變壓器的激勵信號,再控制A/D轉(zhuǎn)換器對旋轉(zhuǎn)變壓器的模擬信號的數(shù)據(jù)進行采樣和轉(zhuǎn)換,并對轉(zhuǎn)換完的數(shù)據(jù)進行濾波處理,使用基于CORDIC算法流水線結(jié)構(gòu)設(shè)計的反正切函數(shù)模塊解算出偏轉(zhuǎn)角θ,最后通過串行口將解算的偏差角數(shù)據(jù)輸出。本文還分析了該系統(tǒng)誤差產(chǎn)生的原因和提高系統(tǒng)精度的方法。 實驗結(jié)果表明,本文所設(shè)計的旋轉(zhuǎn)變壓器解碼器的硬件組成和軟件實現(xiàn)基本能夠較精確的完成上述的信號轉(zhuǎn)換和數(shù)據(jù)運算。
標(biāo)簽: FPGA 旋轉(zhuǎn)變壓器 解碼 算法
上傳時間: 2013-05-23
上傳用戶:gdgzhym
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1