中文字幕一二三区,亚洲国产片在线观看,国产网站午夜性色,亚洲国产综合精品2022

<menuitem id="ct2o2"><var id="ct2o2"></var></menuitem>
      1. <noscript id="ct2o2"><progress id="ct2o2"><i id="ct2o2"></i></progress></noscript>
        1. 期刊 科普 SCI期刊 投稿技巧 學(xué)術(shù) 出書

          首頁 > 優(yōu)秀范文 > 接口設(shè)計論文

          接口設(shè)計論文樣例十一篇

          時間:2023-04-01 10:31:05

          序論:速發(fā)表網(wǎng)結(jié)合其深厚的文秘經(jīng)驗,特別為您篩選了11篇接口設(shè)計論文范文。如果您需要更多原創(chuàng)資料,歡迎隨時與我們的客服老師聯(lián)系,希望您能從中汲取靈感和知識!

          接口設(shè)計論文

          篇1

          1.1固件框架固件程序框架主要包括設(shè)備初始化,處理標(biāo)準(zhǔn)USB設(shè)備請求和USB掛起時的電源管理等。程序框架使用KeilC51編寫,它是現(xiàn)成的直接可以編譯為HEX文件的8051程序代碼,使用者只需要改寫USB描述表,在一些固定函數(shù)下添加功能代碼,主要是EZ⁃USB芯片的初始化配置和實現(xiàn)USB外設(shè)功能的代碼。固件框架的流程圖如圖2所示[4]。復(fù)位后固件先初始化一些全局變量,然后調(diào)用初始化函數(shù)TD_Init(),該函數(shù)初始化USB設(shè)備到?jīng)]有配置的狀態(tài),并打開中斷。循環(huán)1s進(jìn)行一次設(shè)備重枚舉,直到端點0收到一SETUP包,然后進(jìn)入while循環(huán)語句,開始TD_Poll任務(wù)處理函數(shù)。依次執(zhí)行下列過程:(1)TD_Poll()用戶任務(wù)調(diào)度函數(shù);(2)如果發(fā)現(xiàn)USB設(shè)備請求,則分析該請求并執(zhí)行;(3)如果收到USB掛起信號,則調(diào)用TD_Suspend()掛起函數(shù),內(nèi)核掛起,直到出現(xiàn)USB遠(yuǎn)程喚醒信號,調(diào)用TD_Resume(),內(nèi)核喚醒,從新進(jìn)入while循環(huán)。固件框架包含的文件如表1所示。

          1.2固件代碼編寫USB固件程序主要的功能有2個:一是PC機的Windows系統(tǒng)能夠檢測與識別相應(yīng)設(shè)備;二是數(shù)據(jù)的上傳與下傳。Cypress公司為EZ⁃USBFX2系列芯片提供的固件程序框架極大的簡化了固件開發(fā)。一般的固件開發(fā)只需要修改用戶調(diào)度函數(shù)文件Periph.c與USB描述符列表文件Dscr.a51,這兩個文件在KeilC51編程器中都可打開。Periph.c文件中只需要修改TD_Init()與TD_Poll()函數(shù)。在本設(shè)計中為了能進(jìn)行高速的數(shù)據(jù)傳輸,EZ⁃USB芯片采用SlaveFIFO接口方式。此方式下,USB內(nèi)核不參與數(shù)據(jù)的傳輸,所以TD_Poll()函數(shù)不用寫代碼,設(shè)置成空函數(shù)就可以了。這樣USB固件程序的開發(fā)主要任務(wù)就是改寫TD_Init()函數(shù)與USB描述符列表文件Dscr.a51。在本設(shè)計中配置端點6傳輸方向為IN,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為2級,作用是上傳采集的數(shù)據(jù)。配置端點2傳輸方向為OUT,傳輸方式為塊傳輸,緩沖大小設(shè)置為1024B,深度為2級,作用是下傳FPGA的命令配置參數(shù)。固件程序的編譯使用KeilμVision2集成編譯環(huán)境,集成編譯環(huán)境中包括有C51編譯器,A51匯編器等工具與調(diào)試器。代碼中還需包含頭文件FX2.h與Fx2regs.h,庫文件Ezusb.lib。對修改后的代碼進(jìn)行編譯與鏈接,最后生成HEX文件。HEX文件可直接下載到EZ⁃USB中運行。HEX文件也可根據(jù)需要通過CYPRESS公司提供的EZ⁃USBFX2固件開發(fā)包中的Hex2bit.exe應(yīng)用工具生成IIC文件,IIC文件用于燒寫到EEPROM中。

          2固件程序的裝載

          CY7C68013A芯片集成增強型8051內(nèi)核,內(nèi)部無ROM等永久性存儲器,每次上電后需要從新將固件程序載入到片內(nèi)RAM中。EZ⁃USBFX2固件程序有3種加載方式:(1)如果沒有片外存儲器連接到EZ⁃USBFX2上,或者所讀取的首字節(jié)不是0xC0或0xC2,則芯片枚舉為缺省的USB設(shè)備,其中描述符,VID,PID由芯片內(nèi)部硬件邏輯提供。然后固件程序與描述符表由主機下載,EZ⁃USBFX2開始執(zhí)行下載的代碼,首先模擬物理電路的斷開與連接,此時EZ⁃USBFX2將再次進(jìn)行設(shè)備枚舉,這稱為重枚舉,重枚舉將根據(jù)下載的代碼對設(shè)備進(jìn)行從新定義。(2)如果USB檢測到一個E2PROM,其首字節(jié)為0xC0時,芯片也枚舉為缺省的USB設(shè)備,但VID與PID值將從此EEPROM中讀取,USB描述符由芯片內(nèi)部提供。這種模式稱為“C0”加載。主機根據(jù)讀得的VID與PID值,由固件下載驅(qū)動程序?qū)⒅付ǖ墓碳绦蛳螺d到EZ⁃USBFX2,然后再重枚舉。(3)如果USB檢測到一個E2PROM,其首字節(jié)為0xC2時,固件程序?qū)拇薊2PROM中自動下載到FX2芯片上,CPU通過復(fù)位后運行下載的程序代碼。這種模式稱為“C2”加載。其中第一種方式主要是開發(fā)階段使用,它需要主機上有CYPRESS公司提供的開發(fā)軟件USBCONTROLPANEL,每次手動將程序下載到USB上。第二種方法需要開發(fā)者另外再編寫一個固件下載驅(qū)動程序,而且也需要在電路中外加一小容量的E2PROM。第3種方法是將固件程序燒寫到E2PROM中,每次上電自動加載,這種方式簡單直接。本設(shè)計采用第3種方式。

          3驅(qū)動程序及INF文件的編寫

          設(shè)備驅(qū)動程序是應(yīng)用程序和硬件之間的連接,應(yīng)用程序通過驅(qū)動程序與設(shè)備通信,數(shù)據(jù)交換,從而獲取數(shù)據(jù)和對設(shè)備進(jìn)行控制。CYPRESS公司為EZ⁃USBFX2提供一通用的驅(qū)動程序CYUSB.SYS,其功能完備,使用者不需要修改直接使用[5]。USB設(shè)備都具有一個VID和PID,此處的VID和PID與在固件程序轉(zhuǎn)載階段的值不同,這兩個值是用來安裝設(shè)備驅(qū)動程序的,VID和PID放到設(shè)備描述符表中,通過設(shè)備請求讀入到Windows系統(tǒng)中。同時,Win⁃dows操作系統(tǒng)通過INF文件將一VID和PID綁定到某一設(shè)備驅(qū)動程序。當(dāng)設(shè)備連接到主機上時,讀得設(shè)備的VID和PID,通過存儲在INF文件中的信息找到設(shè)備驅(qū)動。此后,Windows會將設(shè)備的VID和PID值保存到注冊表,設(shè)備再次連接時,系統(tǒng)就會在注冊表中查找設(shè)備驅(qū)動程序信息。具體操作方法是將驅(qū)動安裝的模板INF文件的MODEL節(jié)中的VID與PID值修改成與USB設(shè)備的VID和PID值相同。相應(yīng)STRING節(jié)中也修改。

          4與應(yīng)用程序的接口

          圖3是驅(qū)動程序流程圖,從圖中可以看到功能驅(qū)動程序的位置。用戶通過一種規(guī)范的方式調(diào)用WIN32API函數(shù)來訪問硬件,不用考慮如何控制硬件的具體細(xì)節(jié)。USB開發(fā)過程主要應(yīng)知道應(yīng)用程序調(diào)用驅(qū)動程序的接口函數(shù),如下介紹,應(yīng)用程序直接調(diào)用這些函數(shù)來實現(xiàn)與硬件設(shè)備的數(shù)據(jù)交換。CREATEFILE通過設(shè)備名打開設(shè)備,獲得設(shè)備句柄,有設(shè)備句柄就可以讀寫設(shè)備。通過下面語句獲得設(shè)備句柄。DEVICEIOCONTROL讀寫控制設(shè)備,應(yīng)用程序調(diào)用此函數(shù)并加以不同的I/O控制碼參數(shù),完成應(yīng)用程序與驅(qū)動程序?qū)⒌臄?shù)據(jù)交換。主要用到的I/O控制碼有:IOCTL_EZUSB_BULK_READ該控制碼從指定的批量管道中讀取數(shù)據(jù)。讀操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。IOCTL_EZUSB_BULK_WRITE該控制碼向指定的批量管道中寫入數(shù)據(jù)。寫操作阻塞調(diào)用進(jìn)程,直到數(shù)據(jù)傳送完成。CLOSEHANDLE通過句柄關(guān)閉設(shè)備,設(shè)備請求完成后通過此函數(shù)關(guān)閉。

          篇2

          1.1DAC與濾波放大單元DAC與濾波放大單元用于將數(shù)字信號轉(zhuǎn)換為模擬信號,并完成對信號的調(diào)理、幅度調(diào)節(jié)與功率放大功能。其硬件電路如圖2所示。該單元由3部分電路組成,分別是DAC芯片電路、無源濾波電路和差分放大電路。DAC芯片為ADI公司生產(chǎn)的高性能、低功耗CMOS數(shù)模轉(zhuǎn)換芯片AD9762,AD9762為12位分辨率,支持最高125MS/s的更新速率。該芯片使用5V、3.3V可選單電源供電,最高功耗175mW,2mA~20mA差分電流輸出,負(fù)載RLOAD為100Ω時輸出電壓范圍為0.2V~2V[2]。FSADJ引腳連接外接電阻RSET,用于滿量程電流輸出調(diào)節(jié)。REFIO引腳用于基準(zhǔn)電壓VRFE輸入/輸出,選擇內(nèi)部1.2V基準(zhǔn)電源時通過一個0.1μF電容與模擬地連接。其差分輸出電壓VDOUT與輸入的12位數(shù)字代碼(DCODE)的關(guān)系式為。無源濾波電路由電感與電容組成截止頻率為20MHz的7階巴特沃斯低通濾波器,用于信號整形和消除毛刺干擾。差分放大電路以全差分放大器AD8476為核心組成,用于將通過無源濾波電路的模擬差分信號進(jìn)行增益調(diào)節(jié)和功率放大。AD8476是一款功耗極低的全差分精密放大器,其帶寬為6MHz,使用±5V電源供電時的輸出電壓范圍為-4.845V~4.82V[3]。檢測激勵信號的峰峰值為4.3V和6.2V,而DAC的輸出峰峰值電壓為2V,因而差分放大電路的增益應(yīng)當(dāng)大于3.1,這樣才能使得激勵生成通道的輸出信號幅值符合檢測需求。考慮到DAC的轉(zhuǎn)換效率和可能存在的誤差,可設(shè)計差分放大電路具有兩個略大于滿幅度輸出的增益值。圖2中使用外部擴展電阻R1~R6組成反饋電阻網(wǎng)絡(luò),其中R1=R2=10kΩ為輸入電阻,R3=R6=24kΩ、R4=R5=33kΩ為兩組反饋電阻。該電路的增益值分別為A1=R3/R1=2.4,A2=R4/R1=3.3。為了提高檢測接口的自動化程度,使用1個2路2:1電子開關(guān)ADG736用于兩組反饋電阻的切換,通過改變其控制端IN1和IN2的電平邏輯,完成開關(guān)動作。ADG736使用5V供電時,導(dǎo)通電阻RON為2.5Ω,帶寬大于200MHz,通過峰值電壓為5V。

          1.2二線接口與混合電路單元二線接口與混合電路單元用于為信號激勵與數(shù)據(jù)采集提供對外二線接口和實現(xiàn)收發(fā)信號的雙工傳輸。其硬件電路如圖3所示。二線接口電路由電壓比為1的變壓器以及電阻RS1、RS2和電容C9、C10組成,用于提供檢測電路對外的二線接口,實現(xiàn)接收與發(fā)送信號的傳輸,同時可以隔離外部直流信號。RS1、RS2用于與線路負(fù)載阻抗匹配并隔離遠(yuǎn)端反射和提供線路的能量交換,電容C9、C10用于配合組成激勵發(fā)送端擴展濾波電路。混合單元的功能是一階模擬回波抵消,用于抵消本地發(fā)送信號。圖2中R7~R10為輸入電阻,同時與C3~C8組成一階低通濾波器。兩個儀表放大器AD8429用于將二線平衡信號轉(zhuǎn)換為單端信號。AD8429為低噪聲、高精度儀表放大器,其增益為1時增益精度為0.02%、CMRR為80dB、帶寬為15MHz,使用±12V電源供電時其輸出電壓范圍為-10.1V~10.7V,使用單個增益控制電阻RG能夠控制其增益范圍為1~1000,其增益控制關(guān)系為G=1+6kΩ/RG[4]。LT6600-10將一個全差分放大器與一個近似切比雪夫(Chebyshev)頻率響應(yīng)的四階10MHz低通濾波器集成在一起。芯片為低噪聲全差分輸入/輸出放大器,內(nèi)部集成兩個運算放大器、電阻電容網(wǎng)絡(luò),組成1倍增益放大電路和一個10MHz低通濾波器,使用±5V電源供電時其輸出電壓范圍可達(dá)到±5V。若線路電阻RS與負(fù)載電阻RL完全匹配,則第二個AD8429的增益值為2時,混合電路的輸出U′3=U3??紤]到阻抗失配現(xiàn)象的普遍存在,因此選擇電位器作為第二個AD8429的增益控制電阻,在線路阻抗失配的條件下,通過調(diào)節(jié)增益控制電阻來實現(xiàn)混合單元消除近端信號的目的。根據(jù)前文所述,可以得到混合電路輸出信號U′3與二線輸入信號U3比值跟增益控制電阻RG之間的關(guān)系。因此只要知道RG的值,就能夠通過式(5)準(zhǔn)確地對通過混合單元造成的輸入信號幅值的線性誤差進(jìn)行修正。為了提高檢測接口的自動化程度和實現(xiàn)對RG值的實時感知,選擇數(shù)字電位計AD5272作為第二個AD8429的增益控制電阻。AD5272為1024位分辨率、1%電阻容差誤差、I2C接口和50-TP存儲器數(shù)字變阻器,最大阻值為20kΩ,可使用5V電源供電[6],其阻值調(diào)節(jié)步長為1.95Ω。

          1.3信號調(diào)理與ADC單元信號調(diào)理與ADC單元用于將混合電路輸出的模擬差分信號轉(zhuǎn)換為輸入信號并輸入到FPGA,該部分為數(shù)據(jù)采集的核心單元,其硬件電路如圖4所示。由于被測信號的最高頻率不超過2.048MHz,根據(jù)奈奎斯特采樣定理,使用4.096MHz采樣速率進(jìn)行采樣就能得到信號完整的信息,但是在工程中,通常使用5~10倍速率進(jìn)行采樣。因此ADC選擇12位、10MS/s采樣速率模/數(shù)轉(zhuǎn)換器AD9220,其為+5V單電源供電,70dB信噪比,86dB無雜散動態(tài)范圍,內(nèi)置片內(nèi)高性能、低噪聲采樣保持放大器和可編程基準(zhǔn)電壓源,并具有滿量程輸出指示功能[7]。使用1V基準(zhǔn)電壓時其輸入范圍為2V(峰-峰值)。信號調(diào)理電路應(yīng)當(dāng)具有抗混疊濾波和信號幅度調(diào)節(jié)的功能。該電路選擇全差分放大器AD8476組成,考慮到檢測時輸入信號的幅值大于ADC的輸入范圍,因而選擇其輸入電阻為10kΩ,選擇數(shù)字電位器AD5272為反饋電阻RF,則其增益值G4=RF/10kΩ,電路的增益值為0.0002~2可調(diào)。放大器輸出經(jīng)過2個100Ω電阻和2個電容組成的低通濾波器后送至ADC。同時,AD8476以ADC的基準(zhǔn)電壓VREF為共模參考電壓。

          1.4FPGA單元FPGA單元以Xilinx公司的FPGA芯片XC3S400為核心電路組成,其程序存儲芯片為XCF02S,使用40MHz有源晶振,5V電源供電,使用穩(wěn)壓芯片提供電路所需的3.3V、2.5V和1.2V電源。USB接口作為微處理器常用的外部總線接口,目前已經(jīng)得到了廣泛的應(yīng)用[8],因此考慮選用USB2.0接口作為FPGA與上位機之間的數(shù)據(jù)接口。同時采用JTAG接口用于FPGA和其配置芯片的程序燒寫。關(guān)于FPGA電路的設(shè)計、開發(fā)技術(shù)已經(jīng)較為成熟,本設(shè)計相比與其他通用FPGA電路的設(shè)計并無獨特之處,因此不再對FPGA單元進(jìn)行詳細(xì)描述。

          2FPGA程序設(shè)計

          在檢測接口電路的設(shè)計中,F(xiàn)PGA是檢測接口電路的信息傳輸與控制單元的核心,其可編程配置能力和能夠高速、并行處理數(shù)字信號的能力是檢測接口的靈活性和升級性的關(guān)鍵。其內(nèi)部程序使用Xilinx公司的FPGA開發(fā)環(huán)境ISE進(jìn)行設(shè)計并完成燒寫。程序設(shè)計使用模塊化設(shè)計思想,其結(jié)構(gòu)示意圖如圖5所示,可以分USB傳輸、管理控制、DAC傳輸、輸出增益控制、混合單元控制、信號調(diào)理控制、ADC傳輸控制和增益補償8個模塊。下面就各個模塊的功能分別進(jìn)行介紹。(1)USB傳輸模塊,用于通過FPGA單元上的USB接口電路實現(xiàn)FPGA芯片與上位機的信息傳輸,具有USB電路的配置功能,并實現(xiàn)標(biāo)準(zhǔn)USB信號封裝、解封裝功能,將接收到的上位機信號解封裝為透明數(shù)據(jù)傳送到管理控制模塊和DAC傳輸模塊,將管理控制模塊、增益補償模塊輸出信號封裝為標(biāo)準(zhǔn)USB信號通過USB接口電路傳輸?shù)缴衔粰C。(2)管理控制模塊,是整個程序的主控單元。該模塊用于接收USB傳輸模塊輸出的控制信號,對其余的通信模塊進(jìn)行控制,并輸出檢測電路的工作狀態(tài)到USB傳輸模塊,最終傳輸?shù)缴衔粰C。同時用于控制其余模塊的工作狀態(tài),接收混合單元控制模塊、信號調(diào)理控制模塊、ADC傳輸模塊輸出的反饋信息進(jìn)行工作狀判斷,根據(jù)混合單元控制模塊、信號調(diào)理控制模塊反饋信息控制增益補償模塊的補償量。(3)DAC傳輸模塊,在管理控制模塊的控制下工作,接收USB傳輸模塊輸出的激勵信號,并將信號轉(zhuǎn)換為DAC芯片的數(shù)據(jù)輸入信號,同時為DAC芯片提供轉(zhuǎn)換時鐘。(4)輸出增益控制模塊,用于在管理控制模塊輸出的控制信號下工作,根據(jù)需求通過兩路輸出信號IN1和IN2分別控制差分放大電路的2個電子開關(guān)ADG736。(5)混合單元控制模塊,用于在管理控制模塊輸出的控制信號下工作,根據(jù)需求通過輸出I2C信號控制混合單元的數(shù)字電位計AD5272的阻值,完成信號混合功能,并將AD5272的阻值信息反饋給管理控制單元。(6)信號調(diào)理控制模塊,用于在管理控制模塊輸出的控制信號下工作,根據(jù)需求通過輸出2路I2C信號控制信號調(diào)理電路的2個數(shù)字電位計AD5272的阻值,完成信號調(diào)理功能,并將2個AD5272的阻值信息反饋給管理控制單元。(7)ADC傳輸模塊,在管理控制模塊的控制下工作,接收DAC芯片輸出的采樣數(shù)據(jù),并將數(shù)據(jù)傳輸?shù)皆鲆嫜a償模塊,同時為ADC芯片提供采樣時鐘。該模塊同時接收ADC輸出的滿量程指示信號和數(shù)據(jù)輸入指示信號,并傳送給管理控制模塊。(8)增益補償模塊,用于接收來自ADC傳輸模塊的采樣數(shù)據(jù)和管理控制模塊輸出的增益補償信息,對ADC芯片采樣獲得的信號進(jìn)行增益補償,實現(xiàn)檢測信號的完整性。

          篇3

          2軟件設(shè)計

          本接口設(shè)計選用開發(fā)環(huán)境MDK,在MDK環(huán)境下可以使用C/C++方便地開發(fā)Cortex-M3的應(yīng)用程序.與其他開發(fā)程序相比,MDK具有入門容易、使用方便,并在調(diào)試程序、軟件仿真方面也有很強大的功能.以太網(wǎng)收發(fā)數(shù)據(jù)程序流程如圖3所示.主程序通過查詢的方式發(fā)送數(shù)據(jù),采取通過判斷函數(shù)返回值方式是否接收到數(shù)據(jù),若接收到數(shù)據(jù),通過指針把數(shù)據(jù)包傳遞給上層的LwIP協(xié)議棧進(jìn)行處理,完成數(shù)據(jù)包的收?。瞻l(fā)數(shù)據(jù)主程序主要包括系統(tǒng)及外設(shè)的初始化、以太網(wǎng)控制器的初始化、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)和應(yīng)用處理等部分.

          2.1STM32庫STM32庫是由ST公司針對STM32提供的函數(shù)接口,即API(ApplicationProgramInterface),開發(fā)者可以調(diào)用這些庫函數(shù)接口來配置STM32的寄存器,使開發(fā)人員得以脫離最底層的寄存器操作,有開發(fā)速度快、易于閱讀、維護成本低等優(yōu)點.實際上,庫是架設(shè)在寄存器與用戶驅(qū)動層之間的代碼,向下處理與寄存器直接相關(guān)配置,向上為用戶提供平配置寄存器的接口[3].本設(shè)計采用最新的STM32的3.5版庫文件,相對于以往版本的庫文件兼容性更好.

          2.2LwIP協(xié)議棧要實現(xiàn)TCP/IP協(xié)議棧,代碼可以自行編寫,但一般都會移植更加穩(wěn)定優(yōu)良的代碼.LwIP是LightWeightInternetProtocol的縮寫,是由瑞士計算機科學(xué)院AdamDunkels等開發(fā)的適用于嵌入式領(lǐng)域的輕量級TCP/IP協(xié)議棧,它可以移植到含有操作系統(tǒng)的平臺中,也可以在無操作系統(tǒng)的平臺下運行.由于其開源,占用的RAM和ROM比較少,支持較為完整的TCP/IP協(xié)議,且十分便于剪裁、調(diào)試,被廣泛地應(yīng)用于中、低端的32位操作平臺[4].該協(xié)議棧提供了一組API函數(shù)應(yīng)用程序調(diào)用,編程方便[5].LwIP通過pbuf建立了與底層硬件收發(fā)數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu),可以實現(xiàn)數(shù)據(jù)的管理;netif結(jié)構(gòu)體則保存了網(wǎng)卡地址、IP地址、網(wǎng)關(guān)等設(shè)置的這些信息.下面例舉部分LwIP_Init()函數(shù),其主要功能是初始化LwIP協(xié)議棧,主要是把ENC28J60與LwIP連接起來,包括IP,MAC地址,接口函數(shù)。

          3仿真與應(yīng)用

          MDK仿真工具強大,本設(shè)計軟件調(diào)試部分利用MDK軟件針對STM32進(jìn)行仿真,執(zhí)行工程中的代碼.仿真結(jié)果如下圖4所示.構(gòu)成網(wǎng)絡(luò)應(yīng)用的軟件有不同的結(jié)構(gòu),有B/S結(jié)構(gòu)(瀏覽器/服務(wù)器)和C/S(客戶端/服務(wù)器).本網(wǎng)絡(luò)接口設(shè)計中HTTP服務(wù)器其是基于B/S結(jié)構(gòu)的,用戶運行應(yīng)用程序時通過訪問Web調(diào)用服務(wù)器的應(yīng)用程序,并通過瀏覽器把結(jié)果顯示給用戶.該以太網(wǎng)接口應(yīng)用于校園能耗監(jiān)控系統(tǒng)中,所以設(shè)計出一款可以遠(yuǎn)程控制LED燈亮滅的簡單應(yīng)用,其運行結(jié)果如圖5所示.

          篇4

          1.1獲得授權(quán)許可此階段的目的是為了獲得授權(quán)許可,標(biāo)準(zhǔn)定義的四種基本授權(quán)許可類型分別為授權(quán)碼、隱式、資源擁有者口令憑證和客戶端憑證,此外用戶可以自定義擴展的授權(quán)許可類型。授權(quán)過程中需要利用兩個服務(wù)接口:授權(quán)接口和令牌接口,客戶端使用授權(quán)接口通過用戶重定向從資源擁有者獲得授權(quán),另外客戶端使用令牌接口來獲得訪問令牌。為了獲得授權(quán)許可,客戶端需要在HTTP請求中加入所需的參數(shù)并將請求發(fā)往授權(quán)接口,這些參數(shù)包括response_type、client_id、redirect_uri、scope和state。client_id是一個獨一無二的客戶端標(biāo)識符,在客戶端注冊時頒發(fā)客戶端標(biāo)識符,同時還頒發(fā)客戶端機密(client_secret),客戶端標(biāo)識符不能單獨用于客戶端認(rèn)證。redirect_uri是重定向接口,客戶端注冊時需要設(shè)置該接口,授權(quán)服務(wù)器通過使用重定向接口將資源服務(wù)器用戶回送到客戶端。scope是訪問請求的作用域,如果客戶端忽略該值,授權(quán)服務(wù)器必須使用預(yù)定義的默認(rèn)作用域。state被客戶端用于維護請求狀態(tài)。當(dāng)授權(quán)許可類型是授權(quán)碼時,response_type參數(shù)的值必須為code。當(dāng)授權(quán)碼類型是隱式時,response_type的值為token。當(dāng)授權(quán)碼類型為資源擁有者口令憑證時,response_type的值為psword,客戶端必須向服務(wù)器提交客戶標(biāo)志、客戶端標(biāo)識符和客戶端機密。當(dāng)授權(quán)碼類型為客戶端憑證時,客戶端只需要將值為client_credentials的response_type參數(shù)發(fā)送。當(dāng)客戶端使用授權(quán)碼許可類型且資源擁有者批準(zhǔn)授權(quán)請求,需要在給客戶端的應(yīng)答中頒發(fā)授權(quán)碼,應(yīng)答中可能包含的參數(shù)有code和state。code是授權(quán)服務(wù)器生成的授權(quán)碼,為了降低安全風(fēng)險,授權(quán)碼必須在頒發(fā)后盡快失效,規(guī)范中推薦授權(quán)碼最大生存時間為10min。在客戶端授權(quán)請求時如指定了state,則授權(quán)服務(wù)器的應(yīng)答中state必須與從客戶端接收到的值保持一致。如果客戶端使用其他三種客戶端憑證類型將在此步驟直接獲得訪問令牌。OAuth2.0相比OAuth1.0做了較大簡化,比如在OAuth1.0中需要向服務(wù)接口發(fā)送由HTTP請求URL和其他參數(shù)計算而來的簽名值,而在OAuth2.0中不再計算簽名,此外,OAuth2.0也取消了oauth_timestamp和oauth_nonce兩個參數(shù)。同時,OAuth2.0對認(rèn)證過程中的數(shù)據(jù)傳輸保密性提出了更高的要求,強制使用TLS來保障數(shù)據(jù)安全。

          1.2獲得訪問令牌授權(quán)碼類型客戶端獲得授權(quán)許可后,需要向授權(quán)服務(wù)器發(fā)送HTTP請求以獲得訪問令牌。HTTP請求包括以下參數(shù):grant_type、code、redirect_uri和client_id。當(dāng)平臺使用授權(quán)碼許可類型時,grant_type值必須為“authorization_code”。code參數(shù)值是在授權(quán)許可步驟中從授權(quán)接口獲得的授權(quán)碼。redirect_uri和client_id與前一步驟相同。授權(quán)服務(wù)器收到HTTP請求后,需要對客戶端進(jìn)行認(rèn)證,并驗證授權(quán)碼合法性。如果通過授權(quán)碼合法性驗證,授權(quán)服務(wù)器需要向客戶端發(fā)送應(yīng)答,頒發(fā)訪問令牌access_token和可選的刷新令牌refresh_token。此外,應(yīng)答中可能還包括token_type和expires_in參數(shù),其中token_type參數(shù)是訪問令牌類型,expires_in參數(shù)來指定訪問令牌的有效期。

          1.3訪問受保護資源客戶端通過向資源服務(wù)器出示訪問令牌來訪問受保護資源,資源服務(wù)器需檢查訪問令牌,確保訪問令牌合法。如果訪問令牌合法則正常受理訪問請求,如果令牌過期,則要求客戶端重新獲取訪問令牌。如果在此之前授權(quán)服務(wù)器已經(jīng)向客戶端頒發(fā)過刷新令牌,則使用刷新令牌來獲取新的訪問令牌。

          2.OAuth2.0客戶端認(rèn)證接口實例

          本文以某社交平臺授權(quán)機制為例,分析OAuth2.0客戶端注冊和認(rèn)證的流程,并以CocoaTouch為基礎(chǔ)實現(xiàn)了認(rèn)證客戶端。

          2.1客戶端注冊第三方開發(fā)人員在設(shè)計新的客戶端之前需要在官方網(wǎng)站上注冊應(yīng)用,注冊信息包括應(yīng)用名稱、應(yīng)用平臺、應(yīng)用介紹等,注冊成功之后將獲得AppKey和AppSecret,這兩個字符串分別對應(yīng)client_id和client_secret參數(shù)。

          2.2服務(wù)接口開放平臺提供了若干服務(wù)接口(API),與OAuth2.0認(rèn)證相關(guān)的服務(wù)接口有五個,其中兩個API接口將在下文中使用到,分別是請求授權(quán)和獲取授權(quán)。請求授權(quán)用于圖1流程中第1、2步驟,地址。獲取授權(quán)用于圖1流程中第3和第4步驟,地址/oauth2/access_token。

          2.3客戶端實現(xiàn)及安全考慮為了便于認(rèn)證客戶端的實現(xiàn),可以定義一個OAuth2Utility類,下面是類中幾個主要的方法。(void)authorizationRequest;//申請獲得授權(quán)(void)authorizationResponse:(NSString*)authorizationCodeclientState:(NSString*)state;//客戶端接收到授權(quán)許可(void)accessTokenRequest:(NSString*)authorizationCodegrantType:(NSString*)type;//使用授權(quán)許可申請訪問令牌(void)accessTokenResponse:(IHTTPRequest*)request;//客戶端接收到訪問令牌在移動客戶端API中,申請訪問授權(quán)需要提交的參數(shù)包括client_id、response_type和redirect_uri,如需要支持移動客戶端html5特性,需提交參數(shù)display,并將該值設(shè)置為“mobile”。所有參數(shù)需要使用x-www-form-urlencoded格式進(jìn)行編碼,并通過HTTPGET/POST方式發(fā)送。比如使用授權(quán)碼類型的客戶端發(fā)送的HTTP請求可能。RFC6749規(guī)范定義的四種標(biāo)準(zhǔn)授權(quán)許可類型中,授權(quán)碼許可被廣泛支持,而在隱式許可類型中,訪問令牌作為重定向URI的一個部分直接返回給客戶端,不頒發(fā)刷新令牌。資源擁有者口令憑證許可類型和客戶端憑證許可類型由于存在巨大的安全風(fēng)險,一般只在特別的場合下使用。開放平臺的請求授權(quán)服務(wù)接口將授權(quán)碼通過用戶發(fā)回給客戶端,在本例中服務(wù)接口發(fā)回客戶端的HTTP應(yīng)答可以,URL中的code值就是授權(quán)碼。不少服務(wù)接口并沒有完全遵循規(guī)范的要求進(jìn)行設(shè)計,比如本文的例子,容易造成很多安全隱患。Homakov[5]利用跨站請求偽造(CSRF)攻擊來非法訪問第三方資源,攻擊者可以利用這個被挾持的賬號繼續(xù)挾持其他網(wǎng)站的賬號[6]。此外,攻擊者還可以使用猜測授權(quán)碼、惡意客戶端授權(quán)、授權(quán)碼釣魚、用戶會話模仿等方式來獲得授權(quán)碼。搜狐微博OAuth2.0授權(quán)曾經(jīng)由于設(shè)計不當(dāng),被發(fā)現(xiàn)在獲取授權(quán)碼的時候沒有返回state參數(shù)而造成安全隱患。為了規(guī)避安全風(fēng)險,建議服務(wù)接口設(shè)計時應(yīng)采納state參數(shù),并在客戶端注冊期間使用完整的重定向URI[7]。此外,為了減少授權(quán)碼重放攻擊帶來的危害,應(yīng)該盡可能縮短授權(quán)碼的有效期??蛻舳双@得授權(quán)碼之后就可以向獲取授權(quán)服務(wù)接口要求交換訪問令牌,交換訪問令牌需要提交的參數(shù)包括client_id、client_secret、grant_type,如果grant_type類型為授權(quán)碼時,還必須提交code和redirect_uri參數(shù)。所有參數(shù)經(jīng)過編碼之后,通過HTTPPOST方法發(fā)送到獲取授權(quán)服務(wù)接口。HTTP發(fā)送的數(shù)據(jù)可以。獲取授權(quán)服務(wù)接口對客戶端提交的參數(shù)進(jìn)行驗證,如驗證通過則向客戶端發(fā)送應(yīng)答,應(yīng)答中包括access_token、expires_in、remind_in和uid。access_token是頒發(fā)的訪問令牌。expires_in是令牌有效期,令牌有效期取決于令牌泄漏的風(fēng)險,由許多不同的因素決定。該平臺為幾種客戶端分別設(shè)置了不同的令牌有效期,比如測試客戶端的有效期為1d,普通客戶端為7d。remind_in即將廢棄,現(xiàn)已使用expires_in代替remind_in。uid是當(dāng)前授權(quán)用戶的編號。服務(wù)接口應(yīng)答數(shù)據(jù)采用JSON編碼,JSON是一種基于Javcript輕量級的數(shù)據(jù)交換格式。客戶端需要使用JSON的開發(fā)庫來幫助解讀JSON格式數(shù)據(jù)。客戶端獲得訪問令牌之后就可以使用令牌訪問資源,比如讀取公共信息或者發(fā)信息等。以讀取公共信息為例,客戶端向公共信息服務(wù)接口提交訪問令牌就能獲得最新的200條公共信息,客戶端可以通過提交參數(shù)count來設(shè)置單頁返回記錄的條數(shù)??蛻舳送ㄟ^HTTPGET提交數(shù)據(jù),返回的數(shù)據(jù)使用JSON格式編碼。

          2.4客戶端測試本例中客戶端應(yīng)用平臺為iOS,客戶端在MacOSX10.8.3系統(tǒng)以及Xcode4.6.2開發(fā)環(huán)境下測試通過。圖2是客戶端運行的效果截圖。

          篇5

          2LVDS高速數(shù)據(jù)接口實現(xiàn)

          2.1LVDS接口硬件電路設(shè)計由于趨膚效應(yīng)和介質(zhì)損耗,高速信號在傳輸過程中會衰減。因此,當(dāng)傳輸距離較長時,往往要使用電纜驅(qū)動器和均衡器來保證高速數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。電纜驅(qū)動器將信號以最大功率耦合到電纜上[4],延長信號的傳輸距離,電纜均衡器可以對傳輸?shù)男盘栠M(jìn)行高頻補償,以至達(dá)到標(biāo)準(zhǔn)邏輯電位。本設(shè)計中,LVDS串行器/解串器分別選用TI公司的SN65LV1203和SN65LV1224,信號驅(qū)動器/電纜均衡器分別選用NS公司的CLC001和CLC014。LVDS接口電路結(jié)構(gòu)如圖2所示,采編存儲器的FPGA控制LVDS串行器將10bit并行數(shù)據(jù)轉(zhuǎn)換成差分串行數(shù)據(jù),再通過電纜驅(qū)動器將信號耦合到電纜上。地面測試臺的電纜均衡器對接收到的信號進(jìn)行高頻補償之后傳送給解串器,解串器根據(jù)參考時鐘將差分串行數(shù)據(jù)轉(zhuǎn)換成10bit的并行數(shù)據(jù),由FP-GA進(jìn)行后續(xù)的處理。

          2.2FPGA邏輯控制LVDS數(shù)據(jù)接收由于CPCI接口傳輸?shù)臅r鐘和LVDS數(shù)據(jù)接收電路的時鐘不匹配,為了保證數(shù)據(jù)傳輸?shù)目煽啃?,在編寫VHDL語言程序時FPGA內(nèi)部調(diào)用一個異步時鐘控制的緩存FIFO[8]IP核來對接收到的LVDS高速數(shù)據(jù)進(jìn)行緩存,如圖2所示。上位機通過配置PCI9054的傳輸計數(shù)寄存器,將一次DMA傳輸?shù)臄?shù)據(jù)量設(shè)置為2kbyte。寫FIFO的時鐘為18.432MHz,讀FIFO的時鐘為36.864MHz,當(dāng)FIFO內(nèi)數(shù)據(jù)量達(dá)到2kbyte時,F(xiàn)PGA立即通知上位機啟動一次DMA傳輸。經(jīng)計算,從FIFO內(nèi)讀走2kbyte數(shù)據(jù)大約耗時54μs,在這個時間段內(nèi)寫入FIFO的數(shù)據(jù)量大約為1kbyte,所以,當(dāng)DMA傳輸結(jié)束時,F(xiàn)IFO內(nèi)數(shù)據(jù)不足2kbyte,上位機直到FIFO內(nèi)數(shù)據(jù)量再次達(dá)到2kbyte時才會啟動下一次的DMA傳輸。為了避免PCI9054不能立即執(zhí)行DMA傳輸而導(dǎo)致FIFO數(shù)據(jù)溢出,F(xiàn)IFO容量要大于2kbyte。本設(shè)計中選擇容量為4kbyte的FIFO,經(jīng)驗證,不會出現(xiàn)FIFO溢出現(xiàn)象。

          3CPCI局部總線接口實現(xiàn)

          實現(xiàn)CPCI接口協(xié)議一般有兩種方法。其中一種方法為:利用FPGA實現(xiàn)接口邏輯。這種方法雖然可以充分利用FPGA的資源,減小成本,但PCI邏輯十分復(fù)雜,可靠性不能得到保證,且開發(fā)周期長。另外一種方法為:采用專用的PCI接口控制芯片。專用接口芯片功能強大,性能穩(wěn)定,設(shè)計方便,很大程度上減少了設(shè)計者的工作量,縮短了開發(fā)周期。所以,本設(shè)計中選擇使用PCI9054接口控制芯片與FPGA配合工作的方式來實現(xiàn)CPCI局部總線接口通信。

          3.1EEPROM的配置在Windows環(huán)境下,為有效管理多塊CPCI板卡資源,實現(xiàn)多卡協(xié)同工作。通過設(shè)置EEPROM配置選項中的ClassCode/REV值,解決使用同一驅(qū)動情況下,多塊CPCI板卡識別問題。地面測試臺含信源卡和接口卡兩塊CPCI功能板卡,圖3為接口卡的EEPROM配置文件截圖,各板卡需要設(shè)置不同的ClassCode/Rev(圖中紅色選框部分),上位機程序通過識別不同的ClassCode/Rev達(dá)到控制不同板卡的目的。ClassCode/Rev為一個32bit數(shù)據(jù),規(guī)定高8bit作為不同板卡區(qū)分標(biāo)志,低24bit保留。其中D31~D28功能標(biāo)識,區(qū)分是否為信源卡、接口卡等功能卡。D27~D24數(shù)量標(biāo)識,區(qū)分當(dāng)前功能卡的數(shù)量,具體約束如下表1所示。

          3.2CPCI局部總線實現(xiàn)方法

          3.2.1PCI9054工作模式選擇PCI9054總線控制芯片有3種工作模式,即M模式、C模式、J模式。其中,C模式最為簡單,類似于單片機的工作方式,它的地址線和數(shù)據(jù)線分開使用,可以很方便地控制本地時序。所以本設(shè)計中PCI9054工作于C模式,由FPGA邏輯控制本地時序來完成CPCI局部總線與功能板卡之間的通信。

          3.2.2CPCI總線訪問本地總線PCI9054的訪問方式選擇DMA方式。PCI9054作為主控設(shè)備,通過內(nèi)部的DMA控制器來實現(xiàn)局部總線上數(shù)據(jù)與CPCI總線上數(shù)據(jù)的傳輸。在DMA訪問方式下,一個總線周期的時序如圖4所示。當(dāng)CPCI總線訪問本地總線時,PCI9054內(nèi)部的DMA控制器發(fā)出LHOLD信號來申請控制局部總線,當(dāng)其收到響應(yīng)信號LHOLDA后,才獲得局部總線的控制權(quán)。當(dāng)ADS#信號有效時,局部總線上的地址信號LA為有效地址;當(dāng)BLAST#信號有效時,代表一次單周期訪問開啟;READY#為本地總線的狀態(tài)反饋信號,只有當(dāng)其有效時,表示本地總線已經(jīng)準(zhǔn)備好,才可以進(jìn)行訪問;當(dāng)LW/R#為高時,代表單周期訪問為寫操作,當(dāng)LW/R#為低時,代表單周期訪問為讀操作。在本設(shè)計中,F(xiàn)PGA通過識別地址信號LA來判斷具體的操作類型。當(dāng)上位機向接口卡下發(fā)控制命令時,為CPCI總線到本地總線的數(shù)據(jù)傳輸,具體的工作流程為:當(dāng)上位機下發(fā)命令時,啟動一次單周期寫訪問,同時下發(fā)特定的寫地址LA1,F(xiàn)PGA反饋READY#信號,并判斷到LW/R#信號為高,即得知上位機要下發(fā)數(shù)據(jù),便從該特定地址LA1將命令代碼讀出,進(jìn)行解碼之后將命令下發(fā)給采編存儲器。當(dāng)接口卡向上位機傳輸LVDS高速數(shù)據(jù)時,為本地總線到CPCI總線的數(shù)據(jù)傳輸,具體的工作流程為:當(dāng)圖1中所示的LVDS數(shù)據(jù)緩存FIFO內(nèi)數(shù)據(jù)量達(dá)到2kbyte,啟動一次DMA傳輸,即一次DMA傳輸將2kbyte的數(shù)據(jù)上傳給上位機進(jìn)行實時顯示與處理。上位機通過下發(fā)特定地址信號LA2來向FPGA查詢FIFO內(nèi)數(shù)據(jù)量是否達(dá)到2kbyte,一旦其得到緩存FIFO內(nèi)數(shù)據(jù)量滿足要求的信息,立即啟動一次單周期讀訪問,并向FPGA下發(fā)數(shù)據(jù)傳輸?shù)刂稬A3,F(xiàn)PGA反饋READY#信號,并判斷到LW/R#信號為低,便將LVDS數(shù)據(jù)通過地址LA3上傳給上位機。

          4設(shè)計驗證

          將信源卡和接口卡分別插到背板上的2號和3號物理槽中,1號物理槽為系統(tǒng)槽,打開計算機系統(tǒng),安裝驅(qū)動之后,兩塊功能板卡均能夠被識別。分別對兩塊板卡進(jìn)行操作,均能實現(xiàn)各自的功能且互不影響,說明EEPROM的配置正確可行。以接口卡為例,用Chipscope來監(jiān)測CPCI總線對本地進(jìn)行讀、寫操作的實際過程,圖5和圖6分別為單周期讀訪問時序截圖和單周期寫訪問截圖。如圖5所示,當(dāng)FIFO內(nèi)數(shù)據(jù)量達(dá)到2kbyte時,信號f_fifo_hf變高,此時啟動一次單周期讀訪問,LW/R#為低,通過地址0008h將數(shù)據(jù)87h上傳給上位機。實際時序與第3節(jié)介紹的本地總線向CPCI總線傳輸數(shù)據(jù)的理論時序一致,對接收到的數(shù)據(jù)文件進(jìn)行分析,數(shù)據(jù)結(jié)構(gòu)完整,數(shù)據(jù)包計數(shù)連續(xù),沒有丟數(shù)現(xiàn)象,驗證了本設(shè)計中本地總線向CPCI總線傳輸數(shù)據(jù)的正確性。如圖6所示,上位機向FPGA下發(fā)控制信號,此時啟動一次單周期寫訪問,LW/R#為高,F(xiàn)PGA通過地址0004h獲得命令代碼67h。實際通信時序與第3節(jié)介紹的CPCI總線向本地總線傳輸數(shù)據(jù)的理論時序一致,且命令下發(fā)正確,驗證了本設(shè)計中CPCI總線向本地總線傳輸數(shù)據(jù)的正確性。

          篇6

          帶有I2C總線接口的器件可以十分方便地將一個或多個單片機及器件組成單片機系統(tǒng)。盡管這種總線結(jié)構(gòu)沒有并行總線那樣大的吞吐能力,但由于連接線和連接引腳少,因此其構(gòu)成的系統(tǒng)價格低、器件間總線連接簡單、結(jié)構(gòu)緊湊,而且在總線上增加器件不影響系統(tǒng)的正常工作,系統(tǒng)修改和可擴展性好。即使有不同時鐘速度的器件連接到總線上,也能很方便地確定總線的時鐘。

          如今,為了提高系統(tǒng)的數(shù)據(jù)處理精度和處理速度,在家用電器、通訊設(shè)備及各類電子產(chǎn)品中已廣泛應(yīng)用DSP芯片。但大多數(shù)的尚未提供I2C總線接口,本文將介紹一種基于CPLD的已實現(xiàn)的高速DSP的I2C總線接口方案。

          圖1I2C總線接口電路結(jié)構(gòu)

          1I2C通信協(xié)議

          I2C總線是一種用于IC器件之間的二線制總線。它通過SDA(串行數(shù)據(jù)線)及SCL(串行同步時鐘線)兩根線在連到總線上的器件之間傳送信息,通過軟件尋址實現(xiàn)片選,減少了器件片選線的連接。CPU不僅能通過指令將某個功能單元電路掛靠或摘離總線,還可對該單元的工作狀況進(jìn)行檢測,從而實現(xiàn)對硬件系統(tǒng)的擴展與控制。I2C總線接口電路結(jié)構(gòu)如圖1所示,I2C總線時序圖如圖2所示。

          I2C總線根據(jù)器件的功能通過軟件程序使其可工作于發(fā)送(主)或接收(從)方式??偩€上主和從(即發(fā)送和接收)的關(guān)系不是一成不變的,而是取決于數(shù)據(jù)傳送的方向。SDA和SCL均為雙向I/O線,通過上拉電阻接正電源。當(dāng)總線空閑時,兩根線都是高電平。連接總線的器件的輸出級必須是集電極或漏極開路的,以具有線“與”功能。I2C總線的數(shù)據(jù)傳送速率在標(biāo)準(zhǔn)工作方式下為100kbit/s,在快速方式下,最高傳送速率可達(dá)400kbit/s。

          在數(shù)據(jù)傳送過程中,必須確認(rèn)數(shù)據(jù)傳送的開始和結(jié)束信號(也稱啟動和停止信號)。當(dāng)時鐘線SCL為高電平時,數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖絼t定義為“開始”信號;當(dāng)SCL為高電平時,SDA由低電平跳變?yōu)楦唠娖絼t定義為“結(jié)束”信號。開始和結(jié)束信號都由主器件產(chǎn)生。在開始信號以后,總線即被認(rèn)為處于忙狀態(tài);在結(jié)束信號以后的一段時間內(nèi),總線被認(rèn)為是空閑狀態(tài)。

          在I2C總線開始信號后,依次送出器件地址和數(shù)據(jù),I2C總線上每次傳送的數(shù)據(jù)字節(jié)數(shù)不限,但每一個字節(jié)必須為8位,而且每個傳送的字節(jié)后面必須跟一個認(rèn)可位(第9位),也叫應(yīng)答位(ACK)。從器件的響應(yīng)信號結(jié)束后,SDA線返回高電平,進(jìn)入下一個傳送周期。

          2設(shè)計方案

          本文以DSP芯片ADSP21992與時鐘芯片PCF8583的控制接口為例,說明基于CPLD的I2C總線接口設(shè)計方案。

          ADSP21992是2003年最新推出的160MIPS、帶CAN通信接口的適合于高精度工業(yè)控制和信號處理的高性能DSP芯片。它帶有48K片內(nèi)RAM、SPORT通信接口、SPI通信接口、8通道14位A/D轉(zhuǎn)換器以及PWM等。

          PCF8583是一款帶有256字節(jié)靜態(tài)CMOSRAM的時鐘/日歷芯片。地址和數(shù)據(jù)嚴(yán)格按照雙向雙線制I2C總線協(xié)議傳輸。內(nèi)置地址寄存器在每次讀/寫后自動遞增。

          2.1系統(tǒng)結(jié)構(gòu)設(shè)計

          系統(tǒng)的基本功能是通過CPLD的I2C總線接口完成ADSP21992(主控芯片)與PCF8583的數(shù)據(jù)交換。系統(tǒng)框圖如圖3所示。

          系統(tǒng)主要由兩個部分組成:一是DSP與CPLD的接口;另一是I2C核。為了能在DSP指定的時刻讀/寫PCF8583的數(shù)據(jù),使用DSP的讀寫信號、同步時鐘和最高位地址控制數(shù)據(jù)的傳輸。最高位地址作為控制信號是因為DSP的I/O口比較少,必須優(yōu)先供應(yīng)給其它外設(shè),因此用它來產(chǎn)生DSP提供給I2C核的片選信號。而DSP的地址總線位數(shù)較多,最高位一般使用不到,這樣正好可以充分利用資源。

          2.2I2C核

          I2C核原理示意圖如圖4所示。

          整個I2C核由控制模塊和I/O模塊構(gòu)成。其中,控制模塊包括控制信號發(fā)生部分和時鐘開關(guān),I/O模塊包括數(shù)據(jù)緩存和同步時鐘緩存。

          當(dāng)DSP的最高地址位出現(xiàn)一個有效信號時,便會使I2C核內(nèi)的觸發(fā)器產(chǎn)生一個全局使能信號EN?熏它將會啟動時鐘、計數(shù)器和其它控制信號,但數(shù)據(jù)不會出現(xiàn)交換。如果此時DSP的讀/寫同步產(chǎn)生,則會啟動相應(yīng)的讀/寫進(jìn)程,進(jìn)行數(shù)據(jù)傳輸。

          I2C核的關(guān)鍵技術(shù)是:

          ①用計數(shù)器和全局使能信號EN配合觸發(fā)進(jìn)程。

          由于I2C核的片選信號EN是由觸發(fā)產(chǎn)生的,不能象電平信號一樣由DSP的I/O控制,因此只能通過精確的計數(shù)器定時和讀/寫使能信號共同判別控制。

          讀/寫使能信號WR_EN/RD_EN也象EN那樣由觸發(fā)產(chǎn)生,因此也要用同樣的方法判別。

          ②同步時鐘的產(chǎn)生。

          從圖2中可以看到,數(shù)據(jù)在同步時鐘的高電平脈沖時必須保持穩(wěn)定,如果此時發(fā)生變化將會被視為一個控制信號,而通信也會被中斷。因此,同步時鐘的高電平脈沖一定要在有效數(shù)據(jù)的中間出現(xiàn)。而所需的控制信號必須在同步時鐘正脈沖的時候出現(xiàn)。

          ③對數(shù)據(jù)總線進(jìn)行三態(tài)設(shè)置。

          因為SDA和DSP_DATA都是雙向數(shù)據(jù)線,在寫SDA和DSP_DATA的進(jìn)程中必須設(shè)置高阻態(tài),否則會出現(xiàn)數(shù)據(jù)線狀態(tài)“不確定”。

          圖5I2C核工作時序圖

          2.3DSP與CPLD的接口模塊

          根據(jù)DSP的時序,DSP與CPLD之間必須根據(jù)雙方(ADSP21992和PCF8583)的時序制定一個握手協(xié)議。當(dāng)讀程序時,由于I2C總線協(xié)議只能支持最高400kbit/s的傳輸速率,而DSP的同步時鐘可達(dá)幾十兆赫。因此,DSP必須等到I2C核把PCF8583的數(shù)據(jù)讀到CPLD后才能獲得正確的數(shù)據(jù)(這里可以通過設(shè)立一個忙標(biāo)志來實現(xiàn))。而當(dāng)寫程序時,為了節(jié)約CPLD的資源(數(shù)據(jù)緩存特別占用資源),可以設(shè)置DSP定時輸出數(shù)據(jù)給I2C核,讓I2C核的一次只送一個數(shù)據(jù)。

          2.4硬件設(shè)計

          此I2C核可外掛多個帶有I2C總線接口的芯片,可以通過發(fā)送不同的器件地址來選擇。SDA和SCL線必須接上拉電阻。此外,同步時鐘不能太高,否則會影響數(shù)據(jù)傳輸?shù)姆€(wěn)定性。

          2.5時序

          (1)I2C核時序

          以寫為例,I2C核時序如圖5所示。

          (2)PCF8583時序

          PCF8583的數(shù)據(jù)是8bit一個存儲單元,共256個字節(jié),所以只需要8位地址,而且器件本身有兩種尋址方式:一種是從指定地址開始遞增尋址,另一種是從首地址開始遞增尋址。兩種尋址方式的時序是不一樣的,如圖6所示。

          圖6PCF8583時序圖

          篇7

          隨著網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)帶這的增加,上網(wǎng)速度將越來越快。人們也不再僅限于上網(wǎng),在追求上網(wǎng)的同時打網(wǎng)絡(luò)電話,實現(xiàn)與網(wǎng)友的相互交流。目前人們很大程度上依賴于傳統(tǒng)的ISDN上網(wǎng),且在今后一段時間內(nèi),這種依賴不會發(fā)生很大變化。其于這種狀況,設(shè)計了針對企業(yè)的上網(wǎng)設(shè)備(簡稱“企業(yè)上網(wǎng)設(shè)備”),它實現(xiàn)了企業(yè)上網(wǎng)的同時又可打網(wǎng)絡(luò)電話雙重功能。企業(yè)上網(wǎng)設(shè)備的整體實現(xiàn)方案如圖1所示。

          “企業(yè)上網(wǎng)設(shè)備”一端連接ISDN網(wǎng),通過ISDN連接Internet,另一端通過以太網(wǎng)交換機芯片連接用戶端的以太網(wǎng)。另外在用戶端通過POTS電話機接口連接兩部電話機。

          普通電話撥打和接收網(wǎng)絡(luò)話音,必須通過POTS接口才能進(jìn)行。POTS接口是能夠連接普通電話與ISDN的接口設(shè)備,它能使兩部電話同時上網(wǎng)并與其它電話通信。本文對POTS接口進(jìn)行闡述。

          1POTS接口

          要實現(xiàn)普通電話機與ISDN進(jìn)行連接,需要專門的接口(POTS)電路,這個接口電路應(yīng)該具有饋電、過壓保護、振鈴、監(jiān)視、編解碼、信號音產(chǎn)生器等功能。其中,信號產(chǎn)生器產(chǎn)生各種信號音,可通過硬件或軟件方法來實現(xiàn)。若用軟件實現(xiàn),則將這些信號音進(jìn)行抽樣、量化、編碼成PCM數(shù)字信號后存在一個只讀存儲器中,然后再周期重復(fù)地讀出這些值就可以得到數(shù)字信號音。接口電路主要為用戶接口電路(SLIC)、編解碼和濾波器(CODEC),它相當(dāng)于用戶音頻信號處理接口電路(SLAC)、DTMF電路。

          1.1POTS組成

          POTS接口采用LUCENT的L8576(SLIC)、L8503(CODEC)、保護保險絲、可編程邏輯器件GAL16V8D及MOTOROLA的MC145436(DTMF)。原理方塊圖如圖2所示。

          1.2功能描述

          (1)SLIC:SLIC是用戶線接口,它是CODEC與外接話機環(huán)路的中間接口。它具有如下功能:

          ·鈴流信號。能提供話機振鈴所需的鈴流,它是一負(fù)高壓交流信號。

          ·摘掛機檢測信號。它提供話機摘掛機時的微處理器檢測信號,微處理器根據(jù)該信號的變化來判別出話機的摘掛機情況。

          ·語音信號接口。它具有與CODEC與DTMF相連的模擬語音信號接口,完成從話機到CODEC與DTMF或從CODEC到話機的模擬語音信號連接;它是話機與CODEC聯(lián)系的間橋梁。

          ·用戶線接口,連接話機。

          本設(shè)計采用LUCENT的L8576B芯片,它是具有PLCC封裝44只引腳的雙用戶線接口電路。每一路能提供直流饋電、環(huán)路監(jiān)視和鈴流信號,它含有兩路SLIC通道,可外接兩部電話。該芯片內(nèi)含鈴流產(chǎn)生電路,振鈴電源為-65V。

          除了鈴流及饋電功能外,L8576B還提供了接收和發(fā)送通道、摘機檢測、振鈴間斷輸出功能。另外,它還具有溫度保護功能。

          保護:L8576B除了溫度保護外,還具有過壓保護功能,對普通的過壓保雙僅需在TIP和RING端串接電阻即可。然而,為了防止線路短路或雷擊而損壞器件,則必須外加保護器件(L7591)。

          TIP/RING驅(qū)動:L8576B有TIP/RING驅(qū)動電路,其輸出為PT/RP。在正常通話方式下,驅(qū)動器限流為24mA以下,振鈴時則上升到大約85mA。

          (2)CODEC:利用編解碼器、濾波器完成語音信號的A/D與D/A變換,其PCM接口與外部U接口相接,而模擬口與SLIC相接。

          本方案采用LUCENT公司的T8503,其接口功能如下:

          ·數(shù)字接口:包括PCM接口、內(nèi)部時序控制、增益控制。

          PCM接口:管理傳送和接收PCM數(shù)據(jù)及幀同步控制。

          PCM數(shù)據(jù):PCM數(shù)據(jù)每125μs幀周期發(fā)生一次,數(shù)據(jù)時鐘CLK是2.048MHz,每幀有32個時隙,每個時隙8bit數(shù)據(jù)位。DX和DR為數(shù)據(jù)發(fā)送和接收數(shù)據(jù),不發(fā)送數(shù)據(jù)時DX保持三態(tài)狀態(tài),DR接收數(shù)據(jù)時才有效。

          幀同步FS:T8503有四個幀同步(FSX和FSR)輸入,每一對對應(yīng)一個通道。在一個125μs的幀里,每個幀同步提供一個單脈沖。幀同步可以出現(xiàn)在器件上電且MCLK作用于器件的任何時刻,幀同步脈沖的時序表時時隙的開始。在這時隙中,該通道的數(shù)據(jù)在數(shù)據(jù)時鐘作用下輸入或輸出。FSX和FSR高有效,且必須保持高至少一個主時鐘周期,它們可以獨立工作,對符合傳送和接收轉(zhuǎn)換的給定的通道可以將其連一起。在一個幀中,通道0和通道1傳送幀同步必須由一個或多個時隙彼分開。同樣,通道0和通道1接收幀同步也必須由一個或多個時隙彼此分開。除非這兩個通道接收同樣的PCM信號,此時,接收幀同步脈沖可連接在一起。

          對T8503而言,對給定的通道,一幀中FSX和FSR只能發(fā)生一次,與FS的下降沿?zé)o關(guān)且其脈沖寬度不受限制,只要FS有效之前保持至少一個主時鐘周期,數(shù)據(jù)接口就能很好地工作。

          ·模擬口:包括偏置電路和參考源、A/D轉(zhuǎn)換、D/A轉(zhuǎn)換。

          偏置電路和參考源:T8503僅需-+5V電源供電,參考源為+2.4V并由內(nèi)部產(chǎn)生,不需外部附加電路。

          A/D轉(zhuǎn)換:包括一輸入運放、帶通濾波器和譯碼器。

          T8503內(nèi)部還具有濾波電路對放大器輸出信號進(jìn)行濾波,而后對XMT語音模擬信號采樣并按A率進(jìn)行數(shù)字PCM轉(zhuǎn)換。

          D/A轉(zhuǎn)換:解碼器PCM數(shù)據(jù)流轉(zhuǎn)換成模擬信號,輸出放大器單端輸出語音信號RCV,它能驅(qū)動2000Ω的負(fù)載。

          (3)FS譯碼器:由于T8503具有雙通道,且各有自已的同步信號,同步信號不能同時有效,需相差一個或多個時隙、所以要將U接口送來的FS信號一分為二成FS0、FS1兩同步信號,分別作為通道0和通道1的同步信號。FS譯碼器由一可編程邏輯器件GAL16V8D來實現(xiàn),具體電路如圖3所示。

          F0SEL、F1SEL是同步信號選擇信號,為0選通有效,為1則選通無效。F01CTL是幀同步控制信號,該信號在GAL16V8D內(nèi)將被一分為二為互為反相的兩幀同步信號控制信號,它們與FS(IDL_FSR/C)幀同步信號異或產(chǎn)生選擇B1、B2數(shù)據(jù)通道的同步信號FS0、FS1。假設(shè)F01CTL被分F0SEL、F1SEL兩信號且它們有效,則它們的波形關(guān)系如圖4所示。

          本方案擬采用MOTOROLA公司的MC145436(2片)作為DTMF芯片,它將語音模擬信號XMT轉(zhuǎn)換成8421數(shù)字碼,并經(jīng)由GAL16V8D變?yōu)镻OTS_Dva/POTS_DVb輸出信號。這些輸出均連接到微處理器,由微處理器處理這些數(shù)據(jù)進(jìn)而判明撥號號碼。

          (5)保護電路:用戶線接口電路(SLIC)要外加保護電路,以防損壞。采用0.35Ab保險絲作為SLIC的保護。

          2POTS工作過程

          2.1主叫

          ·用戶摘機:當(dāng)用戶摘機時,SLIC輸出給微處理器(μP)終端信號,從而引起微處理器中斷。

          ·送撥號音:微處理器接到SLIC終端信號后,發(fā)生中斷。而后,微處理器執(zhí)行送撥號音子程序,將存儲器中撥號音碼經(jīng)U接口回環(huán)給POTS。POTS的CODEC(T8503)將這些撥號音PCM碼進(jìn)行處理后變成模擬信號RCV輸出到SLIC的RCVN和RCVP差分輸入端,再經(jīng)SLIC的PT、PR輸出給話機,使之發(fā)出撥號聲音。

          ·撥號:當(dāng)主叫聽到撥號音后就可進(jìn)行撥號。撥號模擬信號經(jīng)SLIC輸出給DTMF(MC145436),DTMF將其變成二進(jìn)制的8421碼并等數(shù)據(jù)有效后(Dva/DVb為高)送給微處理器,微處理器將號碼透明地傳送給U接口。

          ·號碼分析:微處理器接收到第一個撥號號碼后就會停止對POTS送撥號音信號并通過ISDN信令將號碼送U接口。局端交換機如果發(fā)現(xiàn)號碼有效,則通過信令通知微處理器,微處理器進(jìn)行相應(yīng)處理。

          ·若主叫所撥號碼符合要求,微處理器通過ISDN信令進(jìn)行下一步處理。

          ·送回鈴音:若被叫忙,ISDN信令通知微處理器,微處理器執(zhí)行送忙音子程序,將存儲器中事先存好的忙音經(jīng)U接口回環(huán)給POTS。POTS的CODEC(T8503)將這些忙音PCM碼進(jìn)行處理后變成模擬信號送SLIC的RCVN和RCVP差分輸入端,再經(jīng)SLIC的PT、PR輸出給話機,使之發(fā)出忙音,以提醒主叫被叫忙。若被叫閑,則ISDN信令通知微處理器,微處理器就執(zhí)行送回鈴音子程序,將存儲器中事先存好的回鈴音經(jīng)U接口回環(huán)給POTS。POTS的CODEC(T8503)將這些回鈴音PCM碼進(jìn)行處理后變成模擬信號送SLIC的RCVN和RCVP差分輸入端,處理后再經(jīng)SLIC的PT、PR輸出給話機,使之發(fā)出回鈴音,以提醒主叫被叫話機響鈴。

          ·通話:當(dāng)被叫摘機后,微處理器就停送回鈴音給POTS,此時主叫和被叫就可以通話了。通話過程如下:

          當(dāng)只使用某一個話機時,主叫的話音信號經(jīng)SLIC送給CODEC;CODEC在對話音信號進(jìn)行A/D變換等處理將話音信號轉(zhuǎn)換成PCM碼,在U接口的幀步和位同步作用下,經(jīng)對其進(jìn)行解碼分成FS0、FS1后,由微處理器選擇一空閑B通道,由數(shù)據(jù)線DX輸出給U接口;同樣,被叫話音信息PCM碼則通過DR接收數(shù)據(jù)線被COTEC接收,再經(jīng)CODEC進(jìn)行D/A變換等處理,輸出模擬信號到SLIC的差分輸入端(RCVN、RCVP),由SLIC處理后送給主叫,從而完成主叫與被叫的通話。

          當(dāng)POTS的兩個話機同時工作時,B1、B2兩數(shù)據(jù)通道均被使用。此時,幀同步FS0、FS1反向,即當(dāng)FS0有效時,F(xiàn)S1無效;反之亦然。由于是長幀工作模式,每個有效幀同步對應(yīng)一個B數(shù)據(jù)通道8位數(shù)據(jù),可通過微處理器控制FXSEL和FXCTL兩信號來選擇FS0或FS1,從而達(dá)到選擇B1或B2數(shù)據(jù)通道的目的。

          ·話終復(fù)原:通話完畢,若被叫先掛機,微處理器要對POTS送忙音碼,從而使主叫話機聽到忙音;若主叫先掛機,則微處理器就進(jìn)行相應(yīng)的操作。

          篇8

          IC卡(IntegratedCircuitcard)即集成電路卡,是將一個集成電路芯片鑲嵌于朔料基片中,封裝成卡的形式,外形與常用的覆蓋磁條的磁卡相似。IC卡芯片具有寫入和存儲數(shù)據(jù)的能力。IC卡存儲器中的內(nèi)容根據(jù)需要可以有條件地供外部讀取,或供內(nèi)部信息處理和判定。根據(jù)卡中所鑲嵌的集成電路的不同,可以分成存儲器卡、邏輯加密卡、CPU卡三類。其中CPU卡即為由中央處理器CPU、EEPROM、隨機存儲器RAM以及固化在只讀存儲器ROM中的片內(nèi)操作系統(tǒng)COS(ChipOperationSystem)組成的IC卡。IC卡按與外界數(shù)據(jù)傳送的形式來分,有接觸式和非接觸式兩種。

          圖1T=0的CPU卡APDU指令實現(xiàn)流程

          1CPUIC卡T=0的協(xié)議介紹

          目前大多數(shù)CPUIC卡采用T=0模式。所謂T=0,即CPUIC卡與接口設(shè)備(即讀寫器)中數(shù)據(jù)傳輸方式為異步半雙工字符傳輸模式。

          從T=0協(xié)議的功能出發(fā),該協(xié)議的實現(xiàn)可以分為物理層、數(shù)據(jù)鏈路層、終端傳輸層和應(yīng)用層。其中物理層和數(shù)據(jù)鏈路層可以具體參看ISO7816標(biāo)準(zhǔn)。在T=0協(xié)議應(yīng)用,終端傳輸層和應(yīng)用層實際上是不易分割來說明的,下面簡單說明。

          終端傳輸層根據(jù)卡片返回的過程字符和狀態(tài)字節(jié)執(zhí)行相應(yīng)的操作,使讀寫器對數(shù)據(jù)的處理過程明朗清晰??ㄆ祷氐倪^程字節(jié)和狀態(tài)字節(jié)跟應(yīng)用層發(fā)送給卡的APDU(ApplicationProtocolDataUnit,應(yīng)用協(xié)議數(shù)據(jù)單元)和VPP使用等有關(guān)。表1為VPP未用時的終端傳輸層中返回的過程字節(jié)。

          表1

          字節(jié)值結(jié)果

          ACKINSVPP空閑,所有其余的數(shù)據(jù)字節(jié)相繼續(xù)被傳送

          INS+''''FF''''VPP空閑,下一個數(shù)據(jù)字節(jié)隨后被傳送

          SW1SW2VPP空閑,接口設(shè)備等待SW2字節(jié)

          應(yīng)用層即為由CLA、INS、P1、P2、P3作為命令頭組成的命令消息體的APDU響應(yīng)和應(yīng)答處理層。其中CLA為指令類別,INS為指令碼,P1、P2為參數(shù),P3為根據(jù)APDU的不同格式為發(fā)送給卡的數(shù)據(jù)長度或期望響應(yīng)的數(shù)據(jù)長度。APDU的幾種情況如表2所列。

          表2

          命令頭發(fā)送數(shù)據(jù)長度發(fā)送的數(shù)據(jù)期望應(yīng)答的數(shù)據(jù)長度

          通用APDUCLAINSP1PLCDataLE

          情況一CLAINSP1P

          情況二CLAINSP1PLE

          情況三CLAINSP1PLCData

          情況四CLAINSP1P2LCDataLE

          CPU卡對接口設(shè)備(即讀寫器)的應(yīng)答APDU情況如表3所列。

          表3

          體尾

          數(shù)據(jù)DataSW1SW2

          其中體中的數(shù)據(jù)字節(jié)數(shù)由命令A(yù)PDU中的LE指出;SW1、SW2是必備的,可以指明命令A(yù)PDU執(zhí)行正確或執(zhí)行出錯的錯誤類型。

          2基于T=0傳輸協(xié)議的CPUIC的APDU指令流程

          根據(jù)目前CPU卡的常用T=0協(xié)議、自帶編程升壓電路的應(yīng)用情況,以及本讀寫器接收IC卡數(shù)據(jù)報文直接發(fā)送PC機處理的特點,本讀寫器可行的APDU命令和響應(yīng)的處理流程如圖1所示。

          3讀寫器的硬件組成

          讀寫器的硬件部分主要由IC接口管理芯片TDA8007、MCUAT89C52、外部數(shù)據(jù)存儲器W24257S、串口電平轉(zhuǎn)換芯片MAX3226、安全I(xiàn)C卡座(即SAM卡座)、應(yīng)用IC卡座、鍵盤口供電的串口通信線及其它相關(guān)元器件組成。

          圖2所示為通過PC機控制管理的外置于PC機的接觸式CPUIC卡讀寫器。通過定制的數(shù)據(jù)線,該讀寫器的5V直流電源可直接由鍵盤口提供,同時數(shù)據(jù)線還負(fù)責(zé)PC機與讀寫器的串行數(shù)據(jù)交換。在大部分IC卡讀寫應(yīng)用中,都涉及到IC卡的認(rèn)證和數(shù)據(jù)讀寫的國解密問題,所以本讀寫器除了提供一個供用戶使用的IC卡接口卡座外,還內(nèi)置了一個SAM卡,即安全I(xiàn)C卡卡座,以方便安裝SAM卡,保證應(yīng)用IC卡讀寫時的數(shù)據(jù)安全,保護用戶的利益。

          硬件的其它組成部分,如處理器,目前采用Atmel的89C52。其4KB的Flash程序存儲器可以滿足讀寫器的程序空間需要。由于PC機與89C52、89C52與TDA8007的數(shù)據(jù)交換要求的暫存數(shù)據(jù)空間比較大,89C52提供的256字節(jié)不夠,需外加一片數(shù)據(jù)存儲器。本讀寫器中使用的是華邦的W24257S。其有32KB存儲容量,IC接口部分的主要芯片為Philips的TDA8007。

          4IC卡接口芯片應(yīng)用

          下面介紹一下TDA8007及其應(yīng)用。TDA8007的原理結(jié)構(gòu)如圖3所示。

          TDA8007芯片能夠提供兩個能同時滿足ISO7816標(biāo)準(zhǔn)及EMV和GSM11-11標(biāo)準(zhǔn)的IC卡讀寫接口。在本讀寫器中,一個用于與應(yīng)用IC通信,另一個用于與安全I(xiàn)C卡通信。與上文CPU卡的觸點圖相對應(yīng),CLKi、RSTi、VCCi、I/Oi、GNDCi、PRESi、C4i、C8i(其中i=1,2;C4i、C8i未用;PRESi可用于檢測IC卡是否插入。具體應(yīng)用可參看TDA8007的技術(shù)文檔)都直接由TDA8007提供給IC卡接口相連,MCU只需通過其接口控制并行通信來管理TDA8007,便可實現(xiàn)對IC卡的上電、下電及讀寫數(shù)據(jù)處理。其中,微處理器既可以通過總線復(fù)用把TDA8007內(nèi)部的所有寄存器作為外部存儲器,用MOVX尋址,也可以通過非總線復(fù)用方式訪問,此時TDA8007用AD0~AD3來區(qū)分內(nèi)部各寄存器。另外,TDA8007的片選信號和外部中斷信號線可以方便讀寫器處理多個IC卡頭。TDA8007的特別硬件ESD處理、接口短路處理、電源出錯處理等也給IC卡和IC卡讀寫器提供了比較高的安全保護;同時,TDA8007內(nèi)部集成的電源管理功能允許TDA8007的供電范圍可達(dá)2.7~6.0V,并且TDA8007通過電源管理可以給IC卡提供5.0V、3.0V及1.8V的電源,以適合不同工作電壓的IC卡應(yīng)用。

          圖3IC卡接口芯片TDA8007的原理框圖

          本讀寫器是通過總線復(fù)用對TDA8007的寄存器進(jìn)行控制的。其中MCU的P1.5為TDA8007的片選,P0口為與之通信的8位數(shù)據(jù)線,TDA8007的各寄存器預(yù)先被宏定義的成微處理器的一個外部數(shù)據(jù)單元(下面電程序處的定義),從而方便MCU訪問。下面結(jié)合TDA8007寄存器的定義和位分配,給出應(yīng)用TDA8007接口芯片對IC卡進(jìn)行上電激活和下電的程序。TDA8007的寄存器主要三類。第一類,通用寄存器:①卡槽選擇CSR;②硬件狀態(tài)HSR;③定時器TOR1、TOR2、TOR3。第二類,ISO7816串行處理寄存器:①串行狀態(tài)USR;②混合狀態(tài)MSR;③串行發(fā)送UTR;④串行接收URR;⑤隊列控制FCR。第三類,卡專屬寄存器:①可編程分頻PDR;②保護時間GTR;③串行控制UCR1、UCR2;④時鐘配置CCR;⑤上電控制PCR。注意:對于卡專屬的寄存器,即卡接口1、卡接口2分別對應(yīng)的寄存器,邏輯上具有相同的名及訪問地址,因而,對不同的瞳操作,需要通過CSR選擇對應(yīng)的卡槽來切換卡??▽偌拇嫫鞯挠成涞奈锢砜臻g。所以,接口設(shè)備每次從一個卡的上下電或讀寫轉(zhuǎn)向另一卡,都需要訪CSR設(shè)定對應(yīng)的卡槽。對于每個寄存器的位定義不再多述,主動性者可參看TDA8007的技術(shù)文檔。

          5上下電過程及具體程序

          圖4為IC卡的上電時序圖。要實現(xiàn)之,需對PCR進(jìn)行寫操作。其中START=PCR.0,RSTIN=PCR.2,VUP上升表示激活了TDA8007中的電壓轉(zhuǎn)換電路。當(dāng)START置高時,只要能檢測到選定卡槽中的IC卡存在,且沒有TDA8007能檢測到并在HSR中指示的硬件錯誤出現(xiàn),則對應(yīng)IC卡接口的VCC1或VCC2將能被提供響應(yīng)的電平(5V、3V或1.8V)。隨后對應(yīng)卡的I/O數(shù)據(jù)線被置成高狀態(tài)(Z狀態(tài)),給IC卡提供設(shè)定的時鐘信號,常用為3.5712MHz。大約在START置高108ETU后,RSTIN置高。因為RST為RSTIN的拷貝,則對應(yīng)卡的RST被置高。然后,用TDA8007提供的定時器TOR3、TOR2設(shè)定對ATR(AnswerToRequest)即復(fù)位應(yīng)答首字節(jié)的最大等待時間120ETU(ElementTimeUnit),TOC設(shè)定定時器工作方式,便開始等待ATR首字節(jié)到來后做相應(yīng)處理。至此,IC卡上電激活工作完成,隨后可以根據(jù)ATR字節(jié)的要求的工作方式對IC卡進(jìn)行相應(yīng)的讀寫處理。具體見上電程序。

          圖4TDA8007產(chǎn)生滿足ISO7816標(biāo)準(zhǔn)訴IC卡上電激活時序

          TDA8007寄存器訪問的預(yù)定義

          #include<absacc.h>

          #defineXXXXBYTE[0x8000]//XXX表示CSR等各寄存器上電程序如下:

          P1.5=0;//片選TDA8007

          CSR&=0xf8;

          CSR|=ncard;//選擇卡,ncard=1,2

          CSR&=0xf7;

          CSR|=0xf7;

          CSR|=0x08;//復(fù)位UART的寄存器

          UCR2&=0xf7;//異步模式,SAN=0

          CCR&=0xdf;//時鐘停止于低電平

          UCR2|=0x60;//關(guān)閉附加中斷及收發(fā)中斷

          GTR=0xff;//保持時間12ETU

          If(v==1)//v為函數(shù)變量

          PCR|=0x08;//1.8V卡用

          elseif(v==3)

          PCR|=0x02;//3V卡用

          Else

          PCR&=0xfd;//5V卡用

          UCR2&=0xfc;//CKU=PSC=0,--31

          FCR=0x00;//1奇偶校驗1FIFO

          PDR=0x0c;//Divider=12

          CCR=0x00;//不分頻

          PCR&=0xfb;//RSTIN=0

          UCR2|=0x04;//不自動轉(zhuǎn)換

          UCR1=0x01;//正向約定

          UCR1&=0xf7;//接收模式

          flag3=0;//復(fù)位定時標(biāo)志

          flagatr=0;//接收ATR首字節(jié)定時標(biāo)志

          PCR|=0x01;//激活

          TOR2=0x6c;

          TOR3=0x00;

          TOC=0x61;//RST拉高前等待108ETU

          while(flag3==0);//定時時間到,在中斷中設(shè)置flag3=1

          TOC=0x00;//關(guān)閉定時器

          PCR|=0x04;//給復(fù)位拉高

          TOR2=0x78;

          TOR3=0x00;

          TOC=0x61;//RST拉高前等待

          flagatr=1;

          ATR();//復(fù)位應(yīng)答處理函數(shù)

          圖5為IC卡的下電時序圖。相對于上電時序,下電過程對時間的要求不是很嚴(yán)格,只要設(shè)計者控制TDA8007按照一定的順序置低START、RSTIN和停止CLK即可,然后TDA8007會自動逐步釋放RST、I/O、Vcc及VUP。具體處理見下電程序。

          下電程序:

          P15=0;

          PCR&=0xfe;//START=0;下電

          PCR&=0xfb;//卡的復(fù)位腳保持0

          CCR&=0xdf;//停止時鐘于低

          CCR|=0x10;//停止時鐘

          P15=1;

          6使用TDA8007應(yīng)當(dāng)注意的問題

          TDA8007對于Vcc、RST出錯,芯片過熱(如圖IC卡為電源短路卡或金屬片),或IC卡插入拔出時都會產(chǎn)生中斷輸出。每次中斷處理結(jié)束,應(yīng)注意把HSR中的值讀入一個臨時地址,以便清楚HSR中的標(biāo)志。

          每次發(fā)送數(shù)據(jù)到IC前,即接收IC卡的最后一個數(shù)據(jù)之前,應(yīng)設(shè)置寄存器UCR1中的LCT位,以便接收完IC卡的數(shù)據(jù)后,自動切換成發(fā)送狀態(tài)。

          對TDA8007部分布線時應(yīng)注意,時鐘信號線與其它線的隔離:最好被地線包圍。

          對于電路板上TDA8007部分的電容應(yīng)盡量靠近TDA8007,其中電容Cap、Cbp、Cup尤其如此,并最好不要在這些電容連向TDA8007引腳過程中使用過孔;同時,Cap、Cup、Cbp電容的ESR要盡量小。

          對TDA8007處理的兩個IC卡座中的任何一個執(zhí)行上電、下電、讀寫卡操作之前,必須執(zhí)行選擇卡座的操作函數(shù),以便選中具體的IC卡進(jìn)行處理。

          篇9

          存儲器是容量數(shù)據(jù)處理電路的重要組成部分。隨著數(shù)據(jù)處理技術(shù)的進(jìn)一步發(fā)展,對于存儲器的容量和性能提出了越來越高的要求。同步動態(tài)隨機存儲器SDRAM(SynchronousDynamicRandomAccessMemory)因其容量大、讀寫速度快、支持突發(fā)式讀寫及相對低廉的價格而得到了廣泛的應(yīng)用。SDRAM的控制比較復(fù)雜,其接口電路設(shè)計是關(guān)鍵。

          本文首先介紹SDRAM的主要控制信號和基本命令;然后介紹接口電路對SDRAM的主要操作路徑及操作過程,應(yīng)用于解復(fù)用的SDRAM接口電路的設(shè)計方法;最后給出了實現(xiàn)結(jié)果。

          1SDRAM的主要控制信號和基本命令

          SDRAM的主要控制信號為:

          ·CS:片選使能信號,低電平有效;

          ·RAS:行地址選通信號,低電平有效;

          ·CAS:列地址選通信號,低電平有效;

          ·WE:寫使能信號,低電平有效。

          SDRAM的基本命令及主要控制信號見表1。

          表1SDRAM基本操作及控制信號

          命令名稱CSRASCASWE

          命令禁止(NOP:Commandinhibit)HXXX

          空操作(NOP:Nooperation)LHHH

          激活操作(ACT:Selectbankandactiverow)LLHH

          讀操作(READ:Selectbankandcolumn,andstartREADburst)LHLH

          寫操作(WRITE:Selectbankandcolumn,andstartWRITEburst)LHLL

          突發(fā)操作停止(BTR:Burstterminate)LHHL

          預(yù)充電(PRE:Deactiverowinbankorbanks)LLHL

          自動刷新或自我刷新(REF:Autorefreshorselfrefresh)LLLH

          配置模式寄存器(LMR:Loadmoderegister)LLLL

          所有的操作控制信號、輸入輸出數(shù)據(jù)都與外部時鐘同步。

          2接口電路對SDRAM的主要操作路徑及操作過程

          一個完備的SDRAM接口很復(fù)雜。由于本文的SDRAM接口應(yīng)用于解復(fù)用,處理的事件相對來說比較簡單,因而可以簡化設(shè)計而不影響性能。接口電路SDRAM的主要操作可以分為:初始化操作、讀操作、寫操作、自動刷新操作。

          (1)初始化操作

          SDRAM上電一段時間后,經(jīng)過初始化操作才可以進(jìn)入正常工作過程。初始化主要完成預(yù)充電、自動刷新模式寄存器的配置。操作過程如圖1所示。

          (2)讀寫操作

          讀寫操作主要完成與SDRAM的數(shù)據(jù)交換。讀操作過程如圖2所示,寫操作過程如圖3所示。

          (3)刷新操作

          動態(tài)存儲器(DynamicRAM)都存在刷新問題。這里主要采用自動刷新方式,每隔一段時間向SDRAM發(fā)一條刷新命令。刷新過程如圖4所示。

          3接口電路的設(shè)計

          (1)解復(fù)用電路

          本解復(fù)用電路主要完成將1路高速數(shù)據(jù)流解復(fù)用為4路數(shù)據(jù)流,其結(jié)構(gòu)框圖如圖5所示。1路數(shù)據(jù)流進(jìn)入解復(fù)用器后,經(jīng)過SDRAM緩沖,解復(fù)用為4路數(shù)據(jù)流。

          由于要解復(fù)用為4路數(shù)據(jù)流,為了充分利用時隙,滿足高速的要求,采用4個bank的SDRAM,各路數(shù)據(jù)緩沖對應(yīng)不同的bank。為簡化設(shè)計,數(shù)據(jù)流1的緩沖區(qū)定為bank0,數(shù)據(jù)流2的緩沖區(qū)定為bank1,數(shù)據(jù)流3的緩沖區(qū)定為bank2數(shù)據(jù)流4的緩沖區(qū)定為bank3。對于每路數(shù)據(jù)實際上是以高速率集中寫入,然后以低速率均勻讀出。

          由于進(jìn)行的是解復(fù)用,因此寫入的數(shù)據(jù)只有1路,但是有可能4路數(shù)據(jù)同時都要讀出。所以對于4路數(shù)據(jù)流,其讀寫地址和讀寫使能信號是分開的。

          (2)SDRAM接口電路的時序控制

          高速數(shù)據(jù)流的速率為3M字節(jié)/秒,采用的系統(tǒng)時鐘為20倍的字節(jié)時鐘。送入SDRAM的時鐘為60MHz系統(tǒng)時鐘。在一個字節(jié)時鐘內(nèi)對SDRAM的操作最多有5次(1次讀,4次寫),而且為了滿足刷新的要求,每個字節(jié)時鐘進(jìn)行一次刷新操作。根據(jù)SDRAM的時序要求,這樣的操作是難以實現(xiàn)的。因而要通過多bank操作,盡量做到時分復(fù)用來實現(xiàn)。圖6給出了在一個字節(jié)時鐘周期的內(nèi)數(shù)據(jù)流1進(jìn)行讀寫操作,其它3路數(shù)據(jù)進(jìn)行讀操作的命令排序時序圖??梢钥闯鐾ㄟ^多bank操作,時分復(fù)用,在20個系統(tǒng)時鐘節(jié)拍內(nèi)所需的讀寫操作命令剛好很緊湊地排開。

          一個字節(jié)時鐘內(nèi)對SDRAM讀寫操作是隨機的,這與數(shù)據(jù)流的復(fù)用比例有在。為了滿足時序,根據(jù)上面的說明,需要把一個字節(jié)時鐘周期內(nèi)對SDRAM的命令合理排序,然后按照排好的順序執(zhí)行命令。這樣就需要把一個字節(jié)時鐘周期內(nèi)對SDRAM的操作進(jìn)行緩存,然后在下一個字節(jié)時鐘周期內(nèi)進(jìn)行排序、與SDRAM命令相對應(yīng)、將命令譯碼產(chǎn)生相應(yīng)的控制信號線,完成操作。緩存排序過程如圖7所示。

          (3)SDRAM接口電路

          SDRAM接口電路中需要專門操作緩沖區(qū)存儲一個字節(jié)時鐘周期內(nèi)的操作,以備下一字節(jié)時鐘的排序。為了方便處理,對每路數(shù)據(jù)的緩沖操作內(nèi)容(或讀或?qū)懀┓旁谝粋€緩沖區(qū)。由于數(shù)據(jù)流的連續(xù)性,排序的同時仍然會有操作要求,因此每路的操作內(nèi)容緩沖區(qū)分為兩塊。對一塊緩沖區(qū)寫入時,讀出另一塊緩沖區(qū)中的操作內(nèi)容,進(jìn)行排序、譯碼、執(zhí)行。根據(jù)字節(jié)時鐘切換對緩沖區(qū)的讀寫,從而避免沖突。對于從SDRAM讀出的數(shù)據(jù),每路數(shù)據(jù)寫入相應(yīng)的讀出數(shù)據(jù)緩沖區(qū)。同樣每路的讀出數(shù)據(jù)緩沖區(qū)也分為兩塊,根據(jù)字節(jié)時鐘切換讀寫。

          由于一個字節(jié)時鐘周期內(nèi),每路所需的操作最多有2次,每路的操作內(nèi)容緩沖區(qū)只需兩個單元(每個單元存儲了此次的讀寫使能信號、寫入數(shù)據(jù)、地址)即可。對于讀出數(shù)據(jù)緩沖區(qū),由于一個字節(jié)時鐘每路數(shù)據(jù)最多執(zhí)行一次讀操作,所以讀出數(shù)據(jù)緩沖區(qū)只需要一個字節(jié)。這兩類緩沖區(qū)容量都小,因此人部用寄存器來實現(xiàn),控制簡單。

          篇10

          1概述

          TM1300是Philips公司推出的新一代高性能多媒體數(shù)字信號處理器芯片?;赥M1300的DSP應(yīng)用系統(tǒng)適合于實時聲音、圖像處理,可廣泛應(yīng)用于會議電視、可視電話、數(shù)字電視等應(yīng)用場合。它不僅具有強大的處理能力,同時還具有非常友好的音頻和視頻以及SSI和PCI等I/O接口,因此可以根據(jù)應(yīng)用的需要靈活地構(gòu)造各種視頻通信系統(tǒng)。鑒于目前計算機網(wǎng)絡(luò)的普及和網(wǎng)上視頻業(yè)務(wù)的發(fā)展,很有必要為TM1300視頻編碼系統(tǒng)開發(fā)一個以太網(wǎng)接口以拓寬其應(yīng)用范圍。開發(fā)以太網(wǎng)接口的一種合理思路是利用TM1300集成的PCI接口來驅(qū)動專用的以太網(wǎng)接口芯片。由于目前多數(shù)以太網(wǎng)接口芯片(如Real-tek8029,Realtek8139等)都采用PCI接口,因此,可以用PCI總線將數(shù)據(jù)從TM1300傳輸?shù)竭@些專用的以太網(wǎng)接口芯片后,再由它們發(fā)送數(shù)據(jù),而且TM1300可以在嵌入式操作系統(tǒng)pSOS中運行,同時由于系統(tǒng)pSOS帶有TCP/IP協(xié)議棧因此可以方便地完成編碼碼流的TCP/IP封裝。

          根據(jù)以上思路筆者在進(jìn)行了前期測試的基礎(chǔ)上進(jìn)行了電路板的設(shè)計并順利完成了調(diào)試。目前這個以太網(wǎng)接口已經(jīng)基本開發(fā)成功。本文將對這個設(shè)計的技術(shù)要點從硬件和軟件兩個方面進(jìn)行詳細(xì)介紹。

          2TM1300及PCI總線接口

          該系統(tǒng)的硬件結(jié)構(gòu)框圖如圖1所示。本系統(tǒng)硬件設(shè)計的重點是PCI總線接口。PCI總線根據(jù)數(shù)據(jù)位的寬度有32位和64位之分,64位的數(shù)據(jù)線與32位是兼容的。PC機中常見的是32位PCI總線,它的有用引腳總數(shù)是110個,可以分成3組。第一組是基本功能信號線,包括32位共享數(shù)據(jù)地址線AD〔00..31〕、接口控制線、仲裁線、時鐘線、系統(tǒng)復(fù)位線、中斷線;第二組是附加功能信號線,包括錯誤報告線、cache功能支持線、JTAG邊界掃描線;第三組是電源線,包括設(shè)備耗電量標(biāo)識線、3.3V電源線(12根)、5V電源線(13根)、地線(22根)。

          因為Realtek8029不具備PCI的附加功能信號線所支持的cache功能和JTAG邊界掃描功能,同時雖然它具有奇偶校驗錯誤報告功能引腳,但該腳可以懸空不用。所以,設(shè)計時只需考慮第一組功能信號線的連接即可。

          PCI接口的設(shè)計有以下幾個要點:

          (1)PCI總線的仲裁

          這里先說明兩個概念。首先,PCI總線是多設(shè)備共享的,由于PC機里可以有多個PCI設(shè)備,所以需要使用仲裁器;其次,PCI設(shè)備有主設(shè)備和從設(shè)備之分,主設(shè)備可以發(fā)起PCI數(shù)據(jù)的傳送從設(shè)備只能被動地響應(yīng)主設(shè)備的操作以對讀操作和寫操作做出響應(yīng)。PCI的仲裁引腳是REQ和GNT,分別為請求線和授權(quán)線,而且只有PCI主設(shè)備有這兩個引腳。一般情況下,REQ通常和GNT成對地連到仲裁器,而設(shè)備與設(shè)備的REQ和GNT通常是互不相連的。

          PCI總線的仲裁過程是這樣的:PCI主設(shè)備把REQ電平拉低以表示向仲裁器請求占用總線。經(jīng)仲裁獲準(zhǔn)后,仲裁器把這個設(shè)備的GNT電平拉低以表示請求獲準(zhǔn),此后該設(shè)備便可以使用總線了。當(dāng)它不再使用總線時,應(yīng)使REQ信號變?yōu)楦唠娖舰熤俨闷骶筒辉俳o它分配總線資源。在本系統(tǒng)中,TM1300是PCI主設(shè)備,而Realtek8029是PCI從設(shè)備。由于它們不存在共享總線的問題,所以不需要仲裁器,而只是簡單地把REQ和GNT短接即可,這就相當(dāng)于TM1300自己給自己授權(quán)。

          (2)PCI_IDSEL信號線在設(shè)備的PCI配置讀寫中的作用

          PCI有一種特殊的讀寫周期,稱為配置讀寫。這是因為在系統(tǒng)引導(dǎo)時,如果沒有給設(shè)備配置I/O或內(nèi)存地址,軟件就只能通過配置來讀寫訪問設(shè)備。配置讀寫有兩種,分別稱為0型和1型具體采用哪一種取決于總線的硬件連接。配置讀寫操作不經(jīng)過PCI橋時,使用0型,當(dāng)需要經(jīng)過PCI橋時,則要用1型,0型讀寫的地址直接就是總線上的地址,1型讀寫的地址則要經(jīng)過PCI橋的譯碼才能成為最終的總線地址。本設(shè)計中,TM1300和Realtek8029是用PCI總線直連的,所以使用0型配置讀寫。

          AD〔00..31〕是PCI總線的共享地址和數(shù)據(jù)線,每一次PCI傳送都分為地址周期和數(shù)據(jù)周期。在地址周期,采用0型讀寫時,AD〔00..31〕的內(nèi)容如下,AD〔00〕和AD〔01〕總為“00”,因為配置讀寫是以雙字為單位的,AD〔02〕~AD〔07〕是要讀寫的PCI配置空間的寄存器號AD〔08〕~AD〔10〕是設(shè)備的功能號在一塊PCI卡上有多個功能設(shè)備時,為了進(jìn)一步區(qū)分不同的設(shè)備就要用到這幾位,由于Realtek8029是單功能設(shè)備,故這幾位全為0,AD〔11〕~AD〔31〕是設(shè)備選擇位,其中必須有且僅有一位為“1”,如圖2所示,這在物理上表現(xiàn)為總線的AD〔11〕~AD〔31〕中有一根為高電平如果輸出高電平的這根線與某塊PCI卡的PCIIDSEL引腳相連,這塊卡就會被激活,這樣,在緊接著的數(shù)據(jù)周期中,它就會將其PCI配置空間相應(yīng)寄存器中的內(nèi)容放到總線上以供讀取。

          (3)PCI_FRAME、PCI_DEVSEL、PCI_IRDY、PCI_TRDY引腳的處理

          上述四個引腳均是低電平有效,因此需要接上拉電阻,以保證在設(shè)備未驅(qū)動該引腳時處于穩(wěn)定的無效狀態(tài),上拉電阻的阻值在1kΩ~10kΩ范圍內(nèi),阻值越小,則將該信號驅(qū)動為有效的時間越短,但太小又會導(dǎo)致電流過大,所以,要權(quán)衡考慮,本設(shè)計選用4.7kΩ。

          上述三點對脫機情況下PCI設(shè)備的互連具有較普遍的參考意義,除此之外,本設(shè)計還有以下比較特殊的幾點:

          應(yīng)將TM1300的PCI,INTA引腳配置為輸入,以便接收Realtek8029的中斷;

          PCI時鐘由TM1300提供;

          Realtek8029的復(fù)位信號也就是TM1300的復(fù)位信號,該信號由外部電路提供;

          TM1300的PCISTOP、PCISERR引腳懸空,表示Realtek8029不具備相應(yīng)的附加功能。另外,TM1300的PCIINTB、PCIINTC、PCIINTD引腳可以用作用戶中斷。

          3軟件設(shè)計

          該接口設(shè)計的軟件結(jié)構(gòu)框圖如圖3所示。其中TM1300運行于pSOS,它是一個簡單的實時多任務(wù)嵌入式操作系統(tǒng),帶有pNA+網(wǎng)絡(luò)組件,其pNA+相當(dāng)于TCP/IP協(xié)議棧的擴展,它向上可提供應(yīng)用程序編程的socket接口,向下可定義一個與網(wǎng)絡(luò)接口層交互的接口,其中包括8個函數(shù),分別是:ni_init(接口芯片初始化)、ni_broad-cast(發(fā)送廣播分組)、ni_send(發(fā)送普通分組)、ni_getpkb(申請發(fā)送緩沖區(qū))、ni_retpkb(歸還接收緩沖區(qū))、ni_ioctl(I/O控制操作)、ni_pool(統(tǒng)計量查詢)、Announce(網(wǎng)絡(luò)接口驅(qū)動調(diào)用它把接收到的數(shù)據(jù)包提交給pSOS)。其中網(wǎng)絡(luò)接口層在本應(yīng)用中就是Realtek8029的驅(qū)動程序,它通過硬件抽象層來驅(qū)動Realtek8029(硬件抽象層是PCI總線的配置讀寫和I/O讀寫指令集的總稱)。

          軟件執(zhí)行的流程大致是:系統(tǒng)首先啟動pSOS,并由它加載網(wǎng)絡(luò)接口驅(qū)動程序,然后調(diào)用驅(qū)動程序的ni_init函數(shù),同時初始化Realtek8029的PCI配置空間并設(shè)置Realtek8029的工作參數(shù),之后啟動用戶任務(wù)。在這里,用戶任務(wù)為H.263編碼進(jìn)程。它對VI口讀入的源圖像進(jìn)行壓縮編碼后,將調(diào)用socket的接口函數(shù)sendto(sendto是UDP套接口專用的發(fā)送函數(shù)),然后把碼流發(fā)送給pSOS由pSOS根據(jù)UDP協(xié)議進(jìn)行封裝后,再調(diào)用ni_send函數(shù),并由ni_send完成數(shù)據(jù)包從系統(tǒng)主內(nèi)存到Realtek8029片上RAM的拷貝,然后啟動Realtek8029發(fā)送數(shù)據(jù)。在接收情況下,Realtek8029收到一個完整的數(shù)據(jù)包后會用中斷通知CPU,然后由CPU執(zhí)行中斷服務(wù)程序。當(dāng)中斷服務(wù)程序?qū)?shù)據(jù)包從Realtek8029片上RAM中拷貝到系統(tǒng)的主內(nèi)存后,系統(tǒng)將調(diào)用Announce函數(shù)并把數(shù)據(jù)塊的指針、數(shù)據(jù)長度和其它信息提交pSOS,最后由pSOS將數(shù)據(jù)包沿協(xié)議棧一層層上傳并作出相應(yīng)的處理。

          軟件的設(shè)計和pSOS操作系統(tǒng)的關(guān)系比較密切,限于篇幅,本文不對pSOS作詳細(xì)介紹,。本文接下來重點介紹PCI配置空間的配置過程,這部分對于類似的設(shè)計有較普遍的參考意義。PCI配置空間有64個字節(jié),PCI片內(nèi)的這些寄存器存儲了該芯片的廠商號、設(shè)備號、設(shè)備類型等重要代碼,還包括命令寄存器、基地址寄存器等控制其總線行為的寄存器,它們必須在設(shè)備初始化時正確配置,否則設(shè)備不能工作。

          對Realtek8029PCI空間的配置需要三個步驟:

          首先是掃描總線,這一步的目的是找到Real-tek8029的配置地址,直觀地講,就是找到它的PCI_IDSEL引腳和哪根AD線相連,因為后續(xù)的配置寫要根據(jù)這個地址來尋址。掃描總線時,要對AD〔11〕到AD〔31〕每根線進(jìn)行一次掃描,如果哪根AD線連接了一個PCI設(shè)備的PCIIDSEL引腳,那么用配置讀函數(shù)讀取PCI配置空間的0號寄存器時,應(yīng)該返回該設(shè)備的設(shè)備和廠商代碼,如果這根線實際未連接設(shè)備,則返回值是0。已知Realtek8029的設(shè)備和廠商代碼是“0x802910ec”,如果返回值與之相同,說明找到了Realtek8029,這時要記下這根AD線的序號。例如,在硬件上把Realtek8029的PCIIDSEL和AD〔20〕相連,則掃描到的序號就應(yīng)該是“20”。

          其次,用配置寫函數(shù)配置I/O讀寫使能,即在command寄存器中寫入“0x1”。

          最后,用配置寫函數(shù)配置I/O地址,也就是在I/OBaseAdddress寄存器寫入分配給該設(shè)備的I/O地址(例如“0xe400”)。具體程序流程圖如圖4所示。

          4調(diào)試結(jié)果

          根據(jù)以上設(shè)計,筆者在原TM1300視頻編碼硬件系統(tǒng)的基礎(chǔ)上加入了PCI接口,并編寫了pSOS下Realtek8029的驅(qū)動程序。然后,在這個硬件平臺上對Realtek8029的驅(qū)動部分進(jìn)行了數(shù)據(jù)傳送測試。

          筆者首先用一個單獨的UDP發(fā)送任務(wù)進(jìn)行發(fā)送速率測試。這個任務(wù)主要是高速地向網(wǎng)絡(luò)上的一臺PC發(fā)送數(shù)據(jù)包,數(shù)據(jù)包的大小是變長的。PC接收并對丟包數(shù)進(jìn)行統(tǒng)計的結(jié)果如表1所列。實驗表明,在用網(wǎng)線直連的各種測試速率情況下都沒有出錯,而當(dāng)接入局域網(wǎng)后,在發(fā)送速率為4.5Mbps時有突發(fā)的少量錯誤。由于UDP是不可靠的傳輸方式,所以這種錯誤是正常的。測試中,UDP發(fā)送的最高速率可以達(dá)到5Mbps左右,它與硬件的最高速率(10Mbps)相比還有一定差距,主要原因是數(shù)據(jù)從系統(tǒng)主內(nèi)存到Realtek8029片上RAM的拷貝過程目前尚未采用DMA方式,這是需要改進(jìn)的地方。

          表1丟包數(shù)統(tǒng)計表(單位:丟包個數(shù)/分鐘)

          連接方式發(fā)送速率

          800kbps1.8Mbps4.5Mbps

          網(wǎng)絡(luò)直連000

          接入局域網(wǎng)002.5

          篇11

          引言

          隨著微電子和無線通信技術(shù)的發(fā)展,非接觸式IC卡技術(shù)也得到蓬勃發(fā)展,但國內(nèi)設(shè)計非接觸IC卡的技術(shù)不夠成熟。高頻接口電路設(shè)計是非接觸式IC卡設(shè)計的關(guān)鍵技術(shù)之一,文中將介紹一種高頻接口電路的設(shè)計。

          1IC卡的基本結(jié)構(gòu)

          圖1是一個具有邏輯加密功能的非接觸式IC卡的結(jié)構(gòu)方塊圖。對于具有邏輯加密功能的非接觸式IC卡,一般包括IC芯片和天線線圈(耦合線圈)。IC芯片又包括高頻接口電路、邏輯控制電路、存儲器等部分。

          2高頻接口模塊設(shè)計

          IC芯片內(nèi)的高頻接口電路是非接觸式IC卡的模擬、高頻傳輸通路和芯片內(nèi)的數(shù)字電路之間的一個接口。它從芯片外的耦合線圈上得到感應(yīng)電流,整流穩(wěn)壓后給芯片提供電源。從閱讀器發(fā)射出來的調(diào)制高頻信號,在高頻界面經(jīng)解調(diào)后重新構(gòu)建一產(chǎn)生在邏輯控制電路中進(jìn)一步加工的數(shù)字式串行數(shù)據(jù)流(數(shù)據(jù)輸入)。時鐘脈沖產(chǎn)生電路從高頻場的載波頻率中產(chǎn)生出用于數(shù)據(jù)載體的系統(tǒng)時鐘。圖2為具有負(fù)載調(diào)制器的高頻界面方框圖。

          為了將芯片內(nèi)處理后的數(shù)據(jù)傳回到閱讀器,高頻界面也包括有負(fù)載波調(diào)制器或反向散射調(diào)制器。它們由傳送的數(shù)字化數(shù)據(jù)控制。

          圖3為卡的模塊結(jié)構(gòu)框圖。整流穩(wěn)壓模塊主要是接收閱讀器發(fā)來的載波,將載波信號轉(zhuǎn)變成直流信號,以作為非接觸IC卡內(nèi)部芯片的電源使用;同時不能因為閱讀器發(fā)來的不間斷載波而使芯片內(nèi)部電源電壓無限增大。調(diào)制解調(diào)模塊主要是將閱讀器發(fā)來的信號從載波信號中取下來;在IC卡發(fā)送信號時將內(nèi)部的數(shù)字信號轉(zhuǎn)換成模擬信號,并上載到載波信號中以傳輸給閱讀器。

          (1)整流穩(wěn)壓模塊的設(shè)計

          該模塊主要包括基準(zhǔn)源電路、電壓調(diào)節(jié)電路和電源開關(guān)電路?;鶞?zhǔn)源電路由二級CMOS差分放大電路和晶體管電路構(gòu)成的能隙基準(zhǔn)源組成。其結(jié)構(gòu)如圖4。

          有源電阻P0和多晶電阻R7組成偏置電路,為電路提供偏置電流。二級差分放大器的兩個輸入連接在Q1端和Q2端。由基準(zhǔn)源原理可知,只有放大電路的輸入失調(diào)電壓很小,并且不受溫度的影響時,基準(zhǔn)源的輸出才可以保持好的性能。根據(jù)放大器和能隙基準(zhǔn)源原理可得:

          I1R6=I2R4(1)

          由(1)式可知,電路中放大器的輸入失調(diào)電壓幾乎為零,故穩(wěn)定后REF點的電壓值為:

          VREF=VQ1+VR6=VQ1+R6I1=VQ1+I2R4(2)

          因PNP晶體管的基極和集電極相連,故VQ1值相當(dāng)于晶體管中BE結(jié)二極管的正向壓降VBE值,為0.6~0.8V。

          晶體管中BE結(jié)溫度系數(shù)為負(fù),電阻溫度系數(shù)為正,在(2)式中VQ1和VR6隨溫度的變化可以相互補償,故該基準(zhǔn)源的輸出VREF對溫度變化不敏感。電壓調(diào)節(jié)電路是穩(wěn)壓電路中的核心部分,包括兩個一級CMOS差分放大電路COMP和電壓調(diào)節(jié)及反饋電路,如圖5。

          兩個差分放大器的輸入由分壓電阻得到。比較放大后經(jīng)反饋調(diào)節(jié)和限流保護電路得到MA1和MB1,以控制電源開關(guān)電路中開關(guān)管的開啟和截止。

          電源開關(guān)電路由儲能電容,NMOS管構(gòu)成的整流器及開關(guān)電路組成,如圖6所示。P1、P2直接連到線圈L0的兩端。通過電磁耦合在P1、P2上感應(yīng)出交流電;經(jīng)整流后,在儲能電容C0端產(chǎn)生直流電壓VDD。調(diào)壓電容C5在N2管導(dǎo)通后構(gòu)成放電回路,使P1、P2上的電流開始對C5充電而停止對C0充電,C0兩端電壓保持穩(wěn)定,即為負(fù)載電路提供穩(wěn)定的電源電壓。