新聞中心

        EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)與FPGA可調(diào)延時(shí)模塊的設(shè)計(jì)

        基于單片機(jī)與FPGA可調(diào)延時(shí)模塊的設(shè)計(jì)

        作者: 時(shí)間:2012-05-29 來(lái)源:網(wǎng)絡(luò) 收藏

          

          在P89C51RD2的64k閃存空間中,地址為0000H-7FFFH的32kB閃存空間作為程序空間,整個(gè)程序編譯后為15k,所以32k的程序空間足夠大。余下的8000H?FFFFH的32kB 閃存空間留作數(shù)據(jù)存儲(chǔ)空間。兩塊數(shù)據(jù)存儲(chǔ)空間輪流使用,當(dāng)數(shù)據(jù)量存滿其中一塊時(shí)通過(guò)程序跳轉(zhuǎn)到另一塊,在使用前先將該塊擦除。

          各函數(shù)介紹如下:

          main()——主程序;

          InitUart(void)——串口初始化;

          IapInit(void)——IAP功能初始化,使用IAP功能前必調(diào)用;

          PowerOnRead(void)——上電讀取最近一次存儲(chǔ)的參數(shù)。模塊對(duì)上電時(shí)間要求不苛刻,最新數(shù)據(jù)的地址可通過(guò)查表方式尋找。每一個(gè)數(shù)據(jù)幀占一個(gè)數(shù)據(jù)存儲(chǔ)空間,由于每次中斷都接收到8個(gè)數(shù)據(jù)幀,所以將每8個(gè)數(shù)據(jù)存儲(chǔ)空間劃分成一組,這樣只要查詢每組的頭一個(gè)地址就能快捷地完成查詢,大大節(jié)省了查詢時(shí)間。

          EraseBlock (uint AddressRestore)——判斷當(dāng)前數(shù)據(jù)存儲(chǔ)空間塊滿,并擦除;

          RestoreData(void)——數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)空間;

          DataUp(uchar DataRec)——更新接口數(shù)據(jù)。

          在程序中,要多次調(diào)用BootROM固件中的子程序。由于IAP子程序接口是匯編語(yǔ)言,為了編寫(xiě)方便,同時(shí)使程序框架明了,編寫(xiě)了一個(gè)IAPLIB.A51匯編語(yǔ)言接口函數(shù)庫(kù)和IAPLIB.H頭文件。在程序中加上IAP.H頭文件,調(diào)用固件程序時(shí)就不需在C51程序中嵌入?yún)R編,而是像調(diào)用C語(yǔ)言函數(shù)一樣簡(jiǎn)單,這大大簡(jiǎn)化了編程。

        設(shè)計(jì)

          FPGA主要設(shè)計(jì)了DECODE延時(shí)通道譯碼器、CS片選信號(hào)控制器、N階SHIFTER移位寄存器。其中譯碼器用于完成對(duì)并口送來(lái)的數(shù)據(jù)進(jìn)行通道、時(shí)間參數(shù)的分離,用通道參數(shù)進(jìn)行尋址和譯碼,這是一種簡(jiǎn)單的譯碼邏輯和觸發(fā)電路。N階移位寄存器用于完成對(duì)信號(hào)進(jìn)行N階的延時(shí)處理,是延時(shí)處理的核心單元。 延時(shí)通道譯碼器將單片機(jī)并口送來(lái)的延時(shí)參數(shù)送入鎖存器,同時(shí)輸出控制電路將移位寄存器對(duì)應(yīng)的延時(shí)階切換到輸出端。從不同的階引出信號(hào)即可獲得不同的延時(shí)量。控制時(shí)鐘和移位寄存器的階數(shù)決定了延時(shí)步進(jìn)調(diào)節(jié)精度和延時(shí)調(diào)節(jié)范圍。如果定時(shí)模塊有N個(gè)信號(hào)通道,每個(gè)定時(shí)模塊集成N個(gè)完全相同的延時(shí)調(diào)節(jié)單元,就可實(shí)現(xiàn)獨(dú)立調(diào)節(jié)各個(gè)通道信號(hào)延時(shí)大小的功能。集成的延時(shí)調(diào)節(jié)單元越多,占用可編程芯片的資源就越多,這可以根據(jù)實(shí)際需要選擇可編程邏輯器件。

          FPAG軟件的設(shè)計(jì)采用“自頂向下”、“軟硬兼施”的設(shè)計(jì)方法,主要的各單元設(shè)計(jì)采用VHDL語(yǔ)言描述完成,而整個(gè)多路信號(hào)的延時(shí)功能處理采用圖形輸入設(shè)計(jì)方法。軟件設(shè)計(jì)完成后,根據(jù)電路原理圖進(jìn)行引腳鎖定,然后啟動(dòng)編譯程序來(lái)編譯項(xiàng)目。編譯器將進(jìn)行錯(cuò)誤檢查、網(wǎng)表提取、邏輯綜合和器件適配,然后進(jìn)行行為仿真、功能仿真和時(shí)序仿真。最后通過(guò)編程器方式將POF文件下載到EPROM中。加電后,F(xiàn)PGA將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,完成配置,從而生成硬件電路。

          模塊功能調(diào)試實(shí)現(xiàn)

          模塊在調(diào)試中出現(xiàn)P89C51RD2有時(shí)上電程序運(yùn)行不正常,讀取程序空間是空的。但是只要上電工作起來(lái),就恢復(fù)正常。懷疑由于上電復(fù)位時(shí)序混亂,造成誤調(diào)用固件擦除芯片子程序。采用專用復(fù)位芯片替換電容電阻加二極管的復(fù)位電路,使問(wèn)題得到了解決。同樣,在單片機(jī)正確送數(shù)情況下,F(xiàn)PGA上電出現(xiàn)不能正常恢復(fù)預(yù)設(shè)好的延時(shí)信號(hào),信號(hào)總是零延遲(第一次上電,單片機(jī)數(shù)據(jù)存儲(chǔ)空間內(nèi)沒(méi)有數(shù)據(jù),信號(hào)就處于零延時(shí)狀態(tài)),但在工作狀態(tài)下,能夠很好地實(shí)現(xiàn)延時(shí)調(diào)節(jié)。懷疑這種情況是因存在復(fù)位問(wèn)題而導(dǎo)致,但專用復(fù)位芯片不能解決問(wèn)題。經(jīng)多次檢查程序,發(fā)現(xiàn)硬件語(yǔ)言程序中觸發(fā)語(yǔ)句是電平觸發(fā),改寫(xiě)為脈沖上升觸發(fā)后問(wèn)題得以解決。

          結(jié)束語(yǔ)

          采用單片機(jī)和FPGA設(shè)計(jì)的延時(shí)調(diào)節(jié)模塊,硬件結(jié)構(gòu)簡(jiǎn)單,設(shè)計(jì)集成度高。軟件方面,單片機(jī)程序?qū)語(yǔ)言和匯編語(yǔ)言很好地結(jié)合,F(xiàn)PGA充分發(fā)揮了硬件語(yǔ)言易改變電路結(jié)構(gòu)和算法的優(yōu)越性。提高FPGA中移位寄存器的時(shí)鐘頻率,同時(shí)相應(yīng)增加移位寄存器程序輸出階數(shù),可實(shí)現(xiàn)更高精度的延時(shí)步進(jìn)調(diào)節(jié)和增大延時(shí)調(diào)節(jié)范圍。因此可以在不改變模塊硬件結(jié)構(gòu)基礎(chǔ)的上,通過(guò)軟件升級(jí)來(lái)提高模塊的性能,從而擴(kuò)大模塊的應(yīng)用領(lǐng)域。


        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 佛冈县| 辽阳县| 宁津县| 科技| 平果县| 太湖县| 高碑店市| 屯昌县| 临西县| 吉林市| 射阳县| 磐安县| 河南省| 鹤峰县| 宜丰县| 临武县| 松溪县| 乐安县| 宿松县| 喀喇| 田阳县| 永安市| 崇礼县| 黄平县| 建湖县| 卫辉市| 承德市| 芦山县| 临城县| 灵山县| 双鸭山市| 营山县| 宁武县| 苍梧县| 酉阳| 象山县| 太湖县| 临海市| 沂水县| 钟祥市| 阳谷县|