<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于單片機與FPGA可調延時(shí)模塊的設計

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

  

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

  各函數介紹如下:

  main()——主程序;

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

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

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

  EraseBlock (uint AddressRestore)——判斷當前數據存儲空間塊滿(mǎn),并擦除;

  RestoreData(void)——數據存儲在數據存儲空間;

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

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

設計

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

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

  模塊功能調試實(shí)現

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

  結束語(yǔ)

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


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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>