復雜可編程邏輯器件在通信數(shù)據(jù)傳輸中的應用
3.2 時鐘產(chǎn)生
CPLD輸入時鐘有來自射頻的16M時鐘,來自外部晶振的32.768M時鐘和來自OMAP接口的75M時鐘CLK。其中16M時鐘用于產(chǎn)生數(shù)據(jù)應用時AD9861所需要的3.2M、6.4M轉換時鐘,32.768M時鐘用于產(chǎn)生語音應用時AD9861所需要的1.6384M、3.2768M時鐘以及CODEC AIC1110所需要的8K和2.048M時鐘。SDCLK本可以作為OMAP讀寫的主時鐘,但必須要使用CAS信號作為讀寫允許配合使用才行,為了節(jié)省布線資源,不用讀寫允許,就直接用CAS作為寫時鐘及OMAP側的地址產(chǎn)生使用,而SDCLK則用于產(chǎn)生一些同步脈沖。這些產(chǎn)生的時鐘除了輸出給外部芯片外,還在CPLD內(nèi)部作為地址產(chǎn)生的時鐘使用。3.2M和6.4M的時鐘產(chǎn)生是把16M的時鐘從0到4計數(shù),由reset和ad_da_enable給計數(shù)器清零,這樣的模5計數(shù)器的最低位即為6.4M,次低位為3.2M時鐘。這種時鐘產(chǎn)生的方式只需要三個DFF,節(jié)省邏輯資源,而且不會產(chǎn)生毛刺,但產(chǎn)生的時鐘占空比不是50%,實踐證明在低速應用時,AD9861是可以正常工作的。系統(tǒng)的時鐘時序如圖3所示。
圖3 時鐘時序
1.6384M和3.2768M時鐘的方法同理,只是需要把32.768M的時鐘20分頻而已,同樣計數(shù)器的清零由reset和ad_da_enable控制,這樣得到的模20計數(shù)器的第2位即為3.2768M,第三位為1.6384時鐘,時序跟上圖相似,這里就不再給出。
這四個時鐘被分時賦給AD9861的主時鐘ADA_CLK,具體是哪個時鐘被賦ADA_CLK,由收發(fā)切換信號TX_RX,語音和數(shù)據(jù)選擇信號V_D_SEL控制。當TX_RX=’0’ 且V_D_SEL=’0’時,輸出給ADA_CLK的時鐘為1.6384M;當TX_RX=’1’且V_D_SEL=’0’時,輸出給ADA_CLK的時鐘為3.2768M;當TX_RX=’0’ 且D_SEL=’1’時,輸出給ADA_CLK的時鐘為3.2M;當TX_RX=’1’ 且V_D_SEL=’1’時,輸出給ADA_CLK的時鐘為6.4M。
為了進一步節(jié)省資源,可以考慮把模5和模20的計數(shù)器共用,方案如圖4所示,BIT1和BIT2即為所需的時鐘,這時前端時鐘源由V_D_SEL選擇,BIT1和BIT2的選擇輸出由TX_RX控制。
圖4 模5 模20 計數(shù)器共用的時鐘產(chǎn)生方案
2.048M的時鐘產(chǎn)生由32.768M時鐘16分頻得到,計數(shù)器的復位由reset和語音允許audcken控制,這樣得到的模16的計數(shù)器的高位即為2.048M時鐘。8K時鐘是對產(chǎn)生的2.048M時鐘256分頻得到。
3.3 地址產(chǎn)生
在使用雙口RAM作為數(shù)據(jù)緩存時,有兩部分地址產(chǎn)生電路:OMAP側地址產(chǎn)生電路和AD9861側地址產(chǎn)生電路。AD9861側地址產(chǎn)生電路和OMAP側地址產(chǎn)生電路大致相同,但由于這2個地址發(fā)生器同時使用,所以不能復用。OMAP的地址發(fā)生器框圖如下:
圖5 OMAP 的地址發(fā)生器
CAS 時鐘只負責對低3 位地址進行計數(shù),而最高位由于選擇2 個8×8RAM 中的一個,為防止adda 和OMAP 同時讀寫同一個RAM,將OMAP 側的高位地址線取值為AD9861 側的地址最高位的反相。DMA 請求清零信號作用:在AD9861 側每觸發(fā)一次DMA 請求,就生成一個DMA 請求清零信號,用于復位OMAP 側地址發(fā)生器,避免由于某此誤觸發(fā)引起OMAP 讀寫地址混亂。AD9861 側地址發(fā)生器如下:
圖6 AD9861 側地址發(fā)生器
4位地址總線的低3位用于選擇同一片RAM中的8個地址,最高位用于選擇2個8×8RAM中的一個,收發(fā)切換信號用于在收發(fā)切換時給地址發(fā)生器清零,復位由于邏輯誤觸發(fā)導致的地址總線錯誤。
評論