基于FPGA的TS over IP的設(shè)計(jì)與實(shí)現(xiàn)
2.4.2 FPGA與MCU通信的實(shí)現(xiàn)
本文引用地址:http://www.biyoush.com/article/279225.htm此模塊實(shí)現(xiàn)FPGA與MCU之間的通信,在本設(shè)計(jì)中主要采用的是EMIF接口的方式,與此同時(shí)我們還使用了MCU的通用I/O口,采用了以EMIF接口為主、通用I/O口為輔的混合通信方式,使FPGA與MCU之間的通信更加地靈活,邏輯框圖如圖4所示。
在本系統(tǒng)中R8051XC2提供了EMIF接口來(lái)訪問(wèn)外部的數(shù)據(jù)或程序存儲(chǔ)器,該接口具有23bit的數(shù)據(jù)總線“memaddr”,可以訪問(wèn)最大16MB的存儲(chǔ)空間;8bit的輸出數(shù)據(jù)總線“memdatao”和8bit的輸入數(shù)據(jù)總線“memdatai”,讀寫(xiě)控制信號(hào)“memwr”和“memrd”,以及一個(gè)響應(yīng)信號(hào)“memack”。
R8051XC2為EMIF接口提供了基于三個(gè)輸入信號(hào)的等待狀態(tài),三種信號(hào)分別為:“mempsack”主要用于外部程序存儲(chǔ)器;“memack”主要用于外部數(shù)據(jù)存儲(chǔ)器;“sfrack”主要用于外部特殊功能寄存器。這些管腳的狀態(tài)在傳輸指令或數(shù)據(jù)時(shí)被采樣,例如,在使用“memrd”和“memwr”對(duì)外部的數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)操作時(shí),處理器會(huì)對(duì)“memack”進(jìn)行采樣來(lái)確認(rèn)外部存儲(chǔ)器是否已經(jīng)完成操作。還提供了一個(gè)全局等待信號(hào)“waitstate”,表示插入一個(gè)等待狀態(tài),無(wú)論是由什么原因引起的。
控制內(nèi)部產(chǎn)生的程序或外部數(shù)據(jù)存儲(chǔ)器的等待狀態(tài)長(zhǎng)度的寄存器是“ckcon”,它的值作為初始值裝入內(nèi)部等待狀態(tài)的計(jì)數(shù)器中。當(dāng)有一個(gè)外部數(shù)據(jù)存儲(chǔ)器的訪問(wèn)初始化時(shí),ckcon[2:0]的值被裝入內(nèi)部等待狀態(tài)計(jì)數(shù)器,這個(gè)計(jì)數(shù)器會(huì)強(qiáng)制將waitstate信號(hào)置1,使處理器中的寄存器和觸發(fā)器進(jìn)入等待狀態(tài),直到計(jì)數(shù)器的值減少到0。
本文設(shè)計(jì)的系統(tǒng)在兩個(gè)不同的層次中包含兩個(gè)時(shí)鐘域,需要使用兩個(gè)PLL模塊來(lái)實(shí)現(xiàn),其中一個(gè)在FPGA的頂層模塊中為MAC模塊和MCU接口模塊提供100MHz與80MHz的時(shí)鐘,并通過(guò)locked接口產(chǎn)生低有效的復(fù)位信號(hào)。另一個(gè)PLL模塊為FPGA提供運(yùn)行時(shí)所需的時(shí)鐘信號(hào)。
2.4.3 異步時(shí)鐘域通信的實(shí)現(xiàn)
在本文介紹的系統(tǒng)中,存在著兩個(gè)時(shí)鐘域,其中TS模塊工作在標(biāo)準(zhǔn)中要求的27MHz的時(shí)鐘域中,處理器和MAC模塊工作在100MHz的時(shí)鐘域中,其中TS模塊需要和處理器之間進(jìn)行數(shù)據(jù)傳輸。在傳輸中需要進(jìn)行異步時(shí)鐘域處理的主要包括兩種信號(hào):一種是控制信號(hào),另一種是數(shù)據(jù)信號(hào)。在異步時(shí)鐘域的通信中需要解決兩個(gè)問(wèn)題:一是信號(hào)的同步,二是盡量減少亞穩(wěn)態(tài)的影響。
對(duì)于第一個(gè)問(wèn)題,在本文中使用部分握手協(xié)議來(lái)進(jìn)行信號(hào)的同步[7]。部分握手協(xié)議的過(guò)程中,兩個(gè)通信的時(shí)鐘域不需要完全了解對(duì)方的狀態(tài),可以按順序發(fā)送或撤銷(xiāo)各自的握手信號(hào)。由于雙方不需要等待對(duì)方的回應(yīng),就可以撤銷(xiāo)自己的信號(hào)并繼續(xù)執(zhí)行協(xié)議,因此相對(duì)于完全握手協(xié)議,部分握手協(xié)議的穩(wěn)定性稍差,當(dāng)然可以使用更少的時(shí)間完成一次握手傳輸。根據(jù)使用的信號(hào)不同,部分握手協(xié)議又可以分為兩種。第一種為使用電平和脈沖的同步握手信號(hào)。第二種為使用脈沖的同步握手信號(hào)。在此本文使用脈沖的同步握手信號(hào),其過(guò)程如圖6所示[6]。
在這種握手機(jī)制中采用脈沖同步器接收通信雙方的握手信號(hào),如果時(shí)鐘域A的時(shí)鐘頻率比時(shí)鐘域B的時(shí)鐘頻率快兩倍時(shí),可以采用邊沿同步器來(lái)收握手信號(hào)。從圖6中可以看出,這種握手機(jī)制中,時(shí)鐘域A需要2個(gè)時(shí)鐘周期,時(shí)鐘域B需要3個(gè)時(shí)鐘周期,所耗費(fèi)的時(shí)鐘周期最少。
握手機(jī)制的優(yōu)點(diǎn)是可以在時(shí)鐘頻率相差較大的時(shí)鐘域之間進(jìn)行通信,可以進(jìn)行多位傳輸。缺點(diǎn)是需要額外的多個(gè)時(shí)鐘周期完成握手的流程,降低了系統(tǒng)的效率。
對(duì)于亞穩(wěn)態(tài)的減少,使用常用的同步電路的方法來(lái)處理,同步電路的原理是降低出現(xiàn)亞穩(wěn)態(tài)的概率,由圖6中可分析出,第一個(gè)時(shí)鐘域的信號(hào)到達(dá)第二個(gè)時(shí)鐘域的第一個(gè)觸發(fā)器時(shí),很可能無(wú)法滿足建立和保持時(shí)間,從而導(dǎo)致在觸發(fā)器的輸出端出現(xiàn)亞穩(wěn)態(tài),當(dāng)這種狀態(tài)持續(xù)不到一個(gè)周期時(shí),可以通過(guò)增加一級(jí)觸發(fā)器來(lái)消除該亞穩(wěn)態(tài),這樣第二個(gè)觸發(fā)器的輸出信號(hào)就可以滿足同步信號(hào)的要求,可以達(dá)到異步電路同步化的效果[4]。
3 系統(tǒng)狀態(tài)機(jī)及各狀態(tài)說(shuō)明
下面主要對(duì)執(zhí)行TS over IP操作時(shí)系統(tǒng)的狀態(tài)轉(zhuǎn)換情況進(jìn)行說(shuō)明。系統(tǒng)狀態(tài)轉(zhuǎn)換圖如7所示。
信號(hào)說(shuō)明:
wdata1,wdata2 :RAM1和RAM2的可寫(xiě)數(shù)據(jù)信號(hào)。
wchk1,wchk2 :RAM1和RAM2的可寫(xiě)包頭信息信號(hào)。
rdata1,rdata2 :RAM1和RAM2的可讀信號(hào)。
狀態(tài)圖說(shuō)明,除開(kāi)始和結(jié)束狀態(tài)外,本系統(tǒng)共包含六個(gè)狀態(tài):
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論