系統(tǒng)集成電路大作業(yè)_第1頁
系統(tǒng)集成電路大作業(yè)_第2頁
系統(tǒng)集成電路大作業(yè)_第3頁
系統(tǒng)集成電路大作業(yè)_第4頁
系統(tǒng)集成電路大作業(yè)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、系統(tǒng)集成與應用實驗設計報告16路模擬信號發(fā)生器班 級:小組成員: 指導教師: 目 錄1、 設計任務和要求分析.22、 整體方案設計選擇.23、 理論計算. . . . .64、 電路設計及仿真. .75、 實驗總結(jié).11六、附錄.12一、設計任務與要求分析1.1 設計任務用C8051F020單片機完成16路信號源的輸出,并通過單片機內(nèi)部A/D轉(zhuǎn)換器進行輸出信號源的反饋采樣,最后通過異步串行接口(UART)將采樣結(jié)果輸出。利用C8051單片機將波形量化數(shù)據(jù)放置于內(nèi)部ROM,通過內(nèi)部D/A產(chǎn)生信號以及I/O端口控制多路模擬開關,同時生成16路信號源,注意信號源調(diào)理電路中采保部分的選值,并給出理論計

2、算結(jié)果。反饋回采部分采用單片機的12位高精度A/D轉(zhuǎn)換器,采樣頻率自定(要求給出理論計算值),并通過UART接口將采樣值送出按9600bps的波特率發(fā)出(接收對象可以是計算機或其它)。1.2 任務要求分析我們通過集體討論與分析,確定了如下的設計流程:圖1.系統(tǒng)流程圖 在進行具體的實驗設計之后,我們進行了電路簡化,放大濾波通過一個運算放大器來實現(xiàn),不僅使電路得到了簡化,而且也節(jié)省了資源。二、整體方案設計選擇2.1 單片機部分單片機選用C8051F020,是完全集成的混合信號系統(tǒng)級MUC芯片具有64個數(shù)字I/O引腳;具有12位100kps的8通道ADC,帶PGA和多路模擬開關 ;具有2個12位DA

3、C,具有可編程數(shù)據(jù)更新方式;64K可在系統(tǒng)編程的FLASH存儲器;4352字節(jié)的片內(nèi)RAM;可尋址64K字節(jié)地址空間的數(shù)據(jù)存儲器接口:2個UART串行接口。基于以上優(yōu)良特性,故選用該單片機。單片機具有上電復位、掉電復位、外部復位、軟件強制復位等多種復位方式。在應用中外部復位方式得到廣泛應用。外部/RST引腳提供使用外部電路使單片機強制復位的手段。在外部/RST引腳加一個低電平有效信號,將使單片機復位,最好提供一個外部上拉,或?qū)ST引腳去耦以防止噪聲引起復位。圖2 單片機外部電路2.2 電源部分設計電源的選定好與壞對于系統(tǒng)設計來說至關重要,一個好的電源的設計標志著成功的一半。在這個系統(tǒng)中我們需

4、要用到一個正負5V的雙電源,用于給運放LM358供電,盡管LM358可以采用單電源供電,但是輸入信號的幅度比較小時,用單電源供電運算放大器的特性會變差,而我們的設計中,輸入信號的變化范圍較大,用雙電源比較合適。同時還需要給模擬開關ADG406和構(gòu)成采樣保持電路的CA3140提供正5V的電源電壓。綜上所述,我們通過用LM7805,LM7905組成一個正負5V的雙電源電路提供正負5V的電源。此外,C8051F020的供電電壓為3.3V,所以我們還需要用LM1117(低壓差三端穩(wěn)壓器)將5V電源轉(zhuǎn)換為3.3V給C8051F020單片機供電。 圖3. 7805設計參考資料 圖4. 7905設計參考資料

5、2.3 模擬開關部分在整個設計中,我們的多路模擬開關采用ADG406,單芯片CMOS模擬多路復用器。ADG406根據(jù)4位二進制地址線A0,A1,A2,A3所確定的地址,將16路輸入之一切換至公共輸出。所有器件均提供EN輸入,用來使能或禁用器件。禁用時,所有通道均關閉。ADG406采用增強型LC2MOS工藝設計,具有低功耗,高開關速度和低導通電阻特性,因而適合高速度數(shù)據(jù)采集系統(tǒng)和音頻信號開關應用。低功耗特性則適合電池供電系統(tǒng)。接通時,各通道在兩個方向的導電性能相同,輸入信號范圍可擴展至電源電壓范圍。在斷開的條件下,達到電源電壓的信號電平被阻止。所有通道均采用先開后合式開關,防止開關通道時發(fā)生瞬時

6、短路。設計本身具有低電荷注入特性,當切換數(shù)字輸入時,可實現(xiàn)最小的瞬變。我們采用ADG406進行采樣時的16路信號的切換以及將16路信號輸入單片機AD時的16路信號切換。 圖5.ADG406真值表以及轉(zhuǎn)換時間2.4 信號調(diào)理部分設計2.4.1采樣保持電路采樣保持電路采用的是CA3140集成采樣保持芯片。它的輸入阻抗高達 ,輸入偏流約10PA,工作速度較高(SR=9V/us),常用于積分及保持電路等。它既可以雙電源供電(±2V±18V),又可以單電源供電(4V36V)。其工作溫度范圍為-55-125,使用CA3140的注意事項如下:(1)因其輸入級為MOSFET,故安裝焊接時應

7、符合MOSFET的要求。(2)CA3140的最大允許差模電壓為±8V,故一般應接保護電路,以免因電壓過高而擊穿,其輸入回路電流應小于1mA,因此需在輸入及反饋回路中接限流電阻,其值一般不小于3.9K。(3)其輸出負載電阻應大于2k,否則將使負向輸出動態(tài)范圍變小。2.4.2放大濾波器部分由于C8051F020的AD轉(zhuǎn)換器輸出電壓為2.4V,且在實際線路輸出過程中會受到噪聲干擾,所以需要設計放大濾波電路。我們選用LM358芯片進行放大濾波,不僅可以簡化電路,并且成本較低。三、理論計算3.1 DAC輸出頻率通過手冊可知,C8051F020內(nèi)部DAC最高輸出頻率為100kHz,模擬開關最快切

8、換時間為180ns,采樣保持電路的采樣時間約為4.5ns,計算如下:180+4.5=184.5ns所以DA的采樣周期必須比184.5ns大,這里我們?nèi)A的輸出周期為184.5*3=553.5ns。即頻率約為:190000hz,但是卻超過了C8051F020內(nèi)部DAC最高輸出頻率為100kHz。所以只要低于190000hz就可以了,為了以后的設計方便,也為了能夠在采集一個周期中盡可能多的點,我們?nèi)AC輸出頻率為1600Hz.此時每一路模擬開關的輸出頻率為100Hz。3.2 ADC回采頻率計算依據(jù)題目ADC回采后經(jīng)串口發(fā)送,串口波特率為9600,所以ADC回采頻率受到串口波特率制約,所以取AD

9、C回采頻率與串口波特率一致:所以ADC采集每一路模擬信號的頻率為1.2kHz。3.3 采樣保持電容計算采樣保持電容大小選取受到切換速度的制約,與模擬開關、輸出放大器的性能都有關系,具體計算如下:計算得:結(jié)果取0.01uf的電容。3.4 濾波器的設計計算由于C8051F020的AD轉(zhuǎn)換器輸出電壓為2.4V,而其內(nèi)部的DA轉(zhuǎn)換器的輸入電壓可以達到4.8V,且在實際線路輸出過程中會受到噪聲干擾,所以我們采用放大倍數(shù)為2倍的低通濾波器。我們設計的濾波器是無限增益多路型低通濾波器,濾波器的參數(shù)分別如下:,所以,增益,固有頻率,阻尼系數(shù)為:。所以截至頻率為。四、電路設計及仿真4.1 電源設計及仿真圖6.雙

10、電源設計電路圖圖7.雙電源仿真結(jié)果圖4.2 放大濾波設計及仿真設計及仿真由于C8051F020的AD轉(zhuǎn)換器輸出電壓為2.4V,而其內(nèi)部的DA轉(zhuǎn)換器的輸入電壓可以達到4.8V,且在實際線路輸出過程中會受到噪聲干擾,所以我們采用放大倍數(shù)為2倍的低通濾波器。我們設計的濾波器是無限增益多路型低通濾波器,濾波器的參數(shù)分別如下:,所以,增益,固有頻率,阻尼系數(shù)為:。所以截至頻率為。圖8.低通濾波及放大電路圖9.低通濾波及放大電路仿真圖4.3采用保持電路的設計圖10.采樣保持電路原理圖4.4模擬開關電路設計圖11.模擬開關電路原理圖4.5抗干擾設計圖12.耦合電容設計圖13.地隔離的設計4.6 整體電路設計

11、 圖14.整體電路原理圖4.7 pcb設計圖15.pcb版圖五、實驗總結(jié) 這次課程設計我們先從C8051F020芯片的引腳功能和工作原理入手。將里面所涉及到的功能用我所學的系統(tǒng)集成以及模數(shù)電、測控電路的知識進行運用。在實現(xiàn)電路的穩(wěn)壓功能時,用到了7805和7905,LM1117這三種芯片。在設計電路的過程中,我們發(fā)現(xiàn)芯片的選擇是非常重要的一個環(huán)節(jié),芯片的參數(shù)以及功能和成本都是我們需要考慮的問題。 同時這次課程設計讓我們小組成員進一步鞏固了對Multisim軟件仿真和AD的使用和操作,在設計中遇到了很多問題,我們通過上網(wǎng)查資料以及同學和老師的幫助,大都得到了解決。除此之外,小組成員也感受到了合作

12、的力量,積極分工,在做好自己的工作的同時,協(xié)助其他成員。在此,感謝老師的悉心指導和他同學的無私幫助! 附錄:程序源碼:#include <c8051f020.h> / SFR declarations/-/ 16-bit SFR Definitions for 'F02x/-sfr16 RCAP4 = 0xE4; / Timer4 capture/reloadsfr16 TMR4 = 0xF4; / Timer4sfr16 DAC0 = 0xd2; / DAC0 datasfr16 DAC1 = 0xd5; / DAC1 data/-/ Global Constants/-

13、#define SYSCLK 22118400 / Internal oscillator frequency in Hz#define SAMPLE_RATE_DAC 100000L / DAC sampling rate in Hz#define PHASE_PRECISION 65536 / range of phase accumulator#define FREQUENCY 1000 / Frequency of output waveform in Hz / <PHASE_ADD> is the change in phase between DAC samples;

14、It is used in / the set_DACs routine.unsigned int PHASE_ADD = FREQUENCY * PHASE_PRECISION / SAMPLE_RATE_DAC;/自加/unsigned long AD;/AD轉(zhuǎn)換的值unsigned char temp_l;unsigned char temp_h;bitReceiveBit;/*接收標志位*/unsigned char temp;/int code SINE_TABLE256 = 0x0000, 0x0324, 0x0647, 0x096a, 0x0c8b, 0x0fab, 0x12c8

15、, 0x15e2, 0x18f8, 0x1c0b, 0x1f19, 0x2223, 0x2528, 0x2826, 0x2b1f, 0x2e11, 0x30fb, 0x33de, 0x36ba, 0x398c, 0x3c56, 0x3f17, 0x41ce, 0x447a, 0x471c, 0x49b4, 0x4c3f, 0x4ebf, 0x5133, 0x539b, 0x55f5, 0x5842, 0x5a82, 0x5cb4, 0x5ed7, 0x60ec, 0x62f2, 0x64e8, 0x66cf, 0x68a6, 0x6a6d, 0x6c24, 0x6dca, 0x6f5f, 0x

16、70e2, 0x7255, 0x73b5, 0x7504, 0x7641, 0x776c, 0x7884, 0x798a, 0x7a7d, 0x7b5d, 0x7c29, 0x7ce3, 0x7d8a, 0x7e1d, 0x7e9d, 0x7f09, 0x7f62, 0x7fa7, 0x7fd8, 0x7ff6, 0x7fff, 0x7ff6, 0x7fd8, 0x7fa7, 0x7f62, 0x7f09, 0x7e9d, 0x7e1d, 0x7d8a, 0x7ce3, 0x7c29, 0x7b5d, 0x7a7d, 0x798a, 0x7884, 0x776c, 0x7641, 0x7504

17、, 0x73b5, 0x7255, 0x70e2, 0x6f5f, 0x6dca, 0x6c24, 0x6a6d, 0x68a6, 0x66cf, 0x64e8, 0x62f2, 0x60ec, 0x5ed7, 0x5cb4, 0x5a82, 0x5842, 0x55f5, 0x539b, 0x5133, 0x4ebf, 0x4c3f, 0x49b4, 0x471c, 0x447a, 0x41ce, 0x3f17, 0x3c56, 0x398c, 0x36ba, 0x33de, 0x30fb, 0x2e11, 0x2b1f, 0x2826, 0x2528, 0x2223, 0x1f19, 0x

18、1c0b, 0x18f8, 0x15e2, 0x12c8, 0x0fab, 0x0c8b, 0x096a, 0x0647, 0x0324, 0x0000, 0xfcdc, 0xf9b9, 0xf696, 0xf375, 0xf055, 0xed38, 0xea1e, 0xe708, 0xe3f5, 0xe0e7, 0xdddd, 0xdad8, 0xd7da, 0xd4e1, 0xd1ef, 0xcf05, 0xcc22, 0xc946, 0xc674, 0xc3aa, 0xc0e9, 0xbe32, 0xbb86, 0xb8e4, 0xb64c, 0xb3c1, 0xb141, 0xaecd

19、, 0xac65, 0xaa0b, 0xa7be, 0xa57e, 0xa34c, 0xa129, 0x9f14, 0x9d0e, 0x9b18, 0x9931, 0x975a, 0x9593, 0x93dc, 0x9236, 0x90a1, 0x8f1e, 0x8dab, 0x8c4b, 0x8afc, 0x89bf, 0x8894, 0x877c, 0x8676, 0x8583, 0x84a3, 0x83d7, 0x831d, 0x8276, 0x81e3, 0x8163, 0x80f7, 0x809e, 0x8059, 0x8028, 0x800a, 0x8000, 0x800a, 0x

20、8028, 0x8059, 0x809e, 0x80f7, 0x8163, 0x81e3, 0x8276, 0x831d, 0x83d7, 0x84a3, 0x8583, 0x8676, 0x877c, 0x8894, 0x89bf, 0x8afc, 0x8c4b, 0x8dab, 0x8f1e, 0x90a1, 0x9236, 0x93dc, 0x9593, 0x975a, 0x9931, 0x9b18, 0x9d0e, 0x9f14, 0xa129, 0xa34c, 0xa57e, 0xa7be, 0xaa0b, 0xac65, 0xaecd, 0xb141, 0xb3c1, 0xb64c

21、, 0xb8e4, 0xbb86, 0xbe32, 0xc0e9, 0xc3aa, 0xc674, 0xc946, 0xcc22, 0xcf05, 0xd1ef, 0xd4e1, 0xd7da, 0xdad8, 0xdddd, 0xe0e7, 0xe3f5, 0xe708, 0xea1e, 0xed38, 0xf055, 0xf375, 0xf696, 0xf9b9, 0xfcdc,;/-/ Function Prototypes/-void main(void);void OSCILLATOR_Init(void);void DAC0_Init (void);void DAC1_Init (

22、void);void TIMER4_Init(int counts);void Set_DACs(void);/自加/void PORT_Init (void);void Timer3_Init (int counts);void ADC_Init(void);void UART0_Init (void);void delayms(unsigned int z);/-/ MAIN Routine/-void main (void) unsigned char temp1=0xff,temp2=0xff;unsigned int ad_now; WDTCN = 0xde; / Disable w

23、atchdog timer WDTCN = 0xad; OSCILLATOR_Init (); / Initialize oscillator DAC0_Init (); / Initialize DAC0 PORT_Init (); Timer3_Init (SYSCLK / 1200 ); ADC_Init(); UART0_Init(); AMX0SL =0x00; /選擇通道AIN0 TIMER4_Init(SYSCLK/SAMPLE_RATE_DAC);/ Initialize Timer4 to overflow / <SAMPLE_RATE_DAC> times pe

24、r / second EA = 1; / Enable global interrupts ES0 =1;/串口中斷使能 while(1) temp1=0xff; temp2=0xff; ad_now=AD; temp1&=ad_now; temp2&=(ad_now>>8);SBUF0=temp1;while(!TI0);TI0=0; SBUF0=temp2;while(!TI0);TI0=0; SBUF0=0x0d;while(!TI0);TI0=0; SBUF0=0x0a;while(!TI0);TI0=0; delayms(200); /自加/void de

25、layms(unsigned int z)unsigned int x,y;for(x=0;x<z;x+)for(y=0;y<121;y+);void PORT_Init (void) XBR2 = 0x40;/*使能交叉開關*/ P2MDOUT =0xff;/ XBR0 = 0x04; /*使能UART0*/ XBR1 = 0x00;/ /XBR2 = 0x40; /*使能交叉開關和弱上拉*/ P0MDOUT |= 0x01; /*使能TX0作為推挽輸出*/ P1MDOUT |= 0x40; /*時能P1.6 (LED)作為推挽輸出*/ P3MDOUT |= 0xdf;XBR0

26、= 0x04; /*使能UART0*/函數(shù)功能: 定時器3初始化/入口參數(shù): int countsvoid Timer3_Init (int counts)TMR3CN = 0x00; TMR3RLL = -counts; /初始化重載值 TMR3L = 0xffff; /設置自動重載值 TMR3CN |= 0x04; /函數(shù)功能: ADC0初始化void ADC_Init(void)ADC0CN |=0x84;/*ADC0使能,定時器3溢出使能模/數(shù)轉(zhuǎn)換*/REF0CN |=0x03;/*內(nèi)部電壓基準提供從VREF腳輸出,ADC0電壓基準取自VREF0*/ADC0CF |=0x50;/*轉(zhuǎn)換

27、周期和增益為1*/AMX0CF |=0x00;/*單端輸入*/EIE2 |=0x02;/*ADC0轉(zhuǎn)換結(jié)束中斷*/函數(shù)功能: AD中斷服務程序void ADC_ISR (void) interrupt 15AD0INT=0;/清A/D中斷標志 temp_l=ADC0L; temp_h=ADC0H; AD=temp_h*256+temp_l;void UART0_Init (void)SCON0=0x50; /串口方式1TMOD=0X20; /選用定時器1作為波特率發(fā)生器TH1=0xF4; TL1=0xF4;PCON=0x80;/波特率為9600TR1=1; /定時器啟動void UART0_I

28、SR (void) interrupt 4/if(TI0) /是發(fā)送中斷還是接收中斷/ /SBUF0=AD;/while(!TI0);/TI0=0;/ /-/ Interrupt Service Routines/-/-/ TIMER4_ISR - Wave Generator/-/ This ISR is called on Timer4 overflows. Timer4 is set to auto-reload mode/ and is used to schedule the DAC output sample rate in this example./ Note that the

29、 value that is written to DAC1 during this ISR call is/ actually transferred to DAC1 at the next Timer4 overflow./-void TIMER4_ISR (void) interrupt 16static unsigned char ch_i;ch_i+;if(ch_i=16) ch_i=0;Set_DACs();P2=ch_i; T4CON &= 0x80; / Clear Timer4 overflow flag /-/ Initialization Routines/-/-

30、/ OSCILLATOR_Init/-/ Return Value : None/ Parameters : None/ This routine initializes the system clock to use an 22.1184MHz crystal/ as its clock source./-void OSCILLATOR_Init (void) int i; / Delay counter OSCXCN = 0x67; / Start external oscillator with / 22.1184MHz crystal for (i=0; i < 256; i+)

31、 ; / Wait for osc. to start up while (!(OSCXCN & 0x80) ; / Wait for crystal osc. to settle OSCICN = 0x88; / Select external oscillator as SYSCLK / source and enable missing clock / detector/-/ DAC0_Init/-/ Return Value : None/ Parameters : None/ Configure DAC0 to update on Timer4 overflows and e

32、nable the the VREF buffer./-void DAC0_Init(void) DAC0CN = 0x94; / Enable DAC0 in left-justified mode / managed by Timer4 overflows REF0CN |= 0x03; / Enable the internal VREF (2.4v) and / the Bias Generator/-/ TIMER4_Init/-/ Return Value : None/ Parameters :/ 1) int counts - calculated Timer overflow rate/ range is positive range of integer: 0 to 32767/ Configure Timer4 to auto-reload at interval specified by <counts> using / SYSCLK as its time base./-void TIM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論