SDRAM在任意波形發(fā)生器中的應用
1 任意波形發(fā)生器的總體方案
工作頻率、分辨率和存儲長(cháng)度是任意波形發(fā)生器最關(guān)鍵的三個(gè)性能參數。高的工作頻率意味著(zhù)高的輸出信號頻率和帶寬,高的分辨率通常意味著(zhù)高的信噪比,而存儲長(cháng)度決定了信號的精確程度。下面介紹的方案是筆者實(shí)際開(kāi)發(fā)的一款任意波形發(fā)生器/卡(如圖1所示),它的工作頻率為300MHz,分辨率為14位,存儲長(cháng)度為8M字,現已得到了廣泛地應用。
該電路主要有兩種工作狀態(tài):寫(xiě)數據狀態(tài)和讀數據狀態(tài)。下面簡(jiǎn)單描述其工作過(guò)程。
寫(xiě)數據狀態(tài):CPU根據所要設計的波形計算波形數據,并轉換成14位的無(wú)符號數;打開(kāi)總線(xiàn)開(kāi)關(guān),屏蔽FIFO操作,在SDRAM控制器的配合下,將波形數據通過(guò)接口電路交替寫(xiě)入SDRAM1和SDRAM2中,即SDRAM1中依次存放數據0,2,4,6...;SDRAM2中依次存放數據1,3,5,7...(如表1所示)。
讀數據狀態(tài):開(kāi)啟FIFO通道,關(guān)閉總線(xiàn)開(kāi)關(guān)以斷開(kāi)SDRAM與CPU之間的數據連接;在SDRAM控制器的控制下,將SDRAM1/2中的數據同時(shí)(并行)讀出;經(jīng)過(guò)FIFO的緩沖得到連續的數據流,再經(jīng)32位向16位的并串轉換,將數據速率提升2倍后,供給DAC進(jìn)行數-模轉換,即可得到所編輯的信號。
圖1中用兩片SDRAM并行工作,是因單片SDRAM不可能提供300MSPS的數據流。實(shí)際使用的器件是K4S641632C-TC60,工作時(shí)鐘為166MHz。FIFO緩存SDRAM的輸出數據,將突發(fā)數據流轉換成連續數據流,使得在SDRAM處于刷新?tīng)顟B(tài)時(shí),仍能維持正常的數據輸出。實(shí)際使用的器件是兩片并行工作的IDT72V263L6PF,寫(xiě)入時(shí)鐘為166MHz,讀出時(shí)鐘為150MHz。并串轉換的作用是提升數據的速率,在DAC器件內部完成,筆者采用具有良好動(dòng)態(tài)性能的AD9755AST。CPU及控制接口是一個(gè)基于PC的ISA設備,可改進(jìn)為PCI設備;時(shí)鐘電路用來(lái)產(chǎn)生166MHz和150MHz的同步時(shí)鐘。下面重點(diǎn)研究SDRAM控制器的設計,它是本系統的主要特色之一。
2 SDRAM控制器的設計
2.1 SDRAM的主要特點(diǎn)
與靜態(tài)存儲器(SRAM)相比,SDRAM的容量大(通常是幾倍至幾十倍的關(guān)系);與DDR SDRAM或RDRAM相比,它的控制又相對簡(jiǎn)單,因而它依然是大容量存儲器工程項目的良好選擇。下面描述的幾個(gè)重要基本概念反映了它的主要特點(diǎn)。
行列地址:SDRAM的地址是行列復用的,此舉有效減少了芯片的引腳。
預充電:讀寫(xiě)操作只對預充電過(guò)的行有效。也就是說(shuō),在數據讀寫(xiě)操作跨行時(shí),需要先進(jìn)行至少一次的預充電操作。
自動(dòng)刷新:眾所周知,只要是動(dòng)態(tài)RAM,就存在刷新問(wèn)題,SDRAM也不例外。通常每隔64ms需要將所有存儲單元刷新一遍。
自刷新:當需要保留芯片內的數據,而暫時(shí)又不需要操作時(shí),可以設置芯片進(jìn)入自刷新?tīng)顟B(tài)。
工作模式寄存器:控制SDRAM工作方式的寄存器(如表2所示)。
2.2 SDRAM的狀態(tài)流程
SDRAM的完整狀態(tài)機由17個(gè)狀態(tài)構成,且狀態(tài)轉移是非隨機的(如圖2所示)。正是如此眾多的狀態(tài)及其復雜的轉換關(guān)系,導致SDRAM的控制較為復雜。
需要特別說(shuō)明的是,SDRAM的狀態(tài)轉移有自動(dòng)轉移與人工轉移之分(圖2中以粗細箭頭加以區別)。自動(dòng)轉移在當前狀態(tài)結束后立即進(jìn)入下一個(gè)狀態(tài);而人工轉移在當前狀態(tài)結束后即停留在當前狀態(tài),只有一條當前狀態(tài)允許的命令才能進(jìn)入下一個(gè)狀態(tài)。
可以想象,自行設計如此復雜的控制流程絕非易事。值得慶幸的是,在大多數應用中并不需要完備的狀態(tài)機。下面討論一種簡(jiǎn)化的SDRAM狀態(tài)機。
2.3 簡(jiǎn)化的狀態(tài)流程
根據任意波形發(fā)生器的特點(diǎn),對SDRAM的功能進(jìn)行了以下簡(jiǎn)化:
(1)省略隨機存取功能,固定為順序讀寫(xiě);
(2)省略待機、自刷新、普通讀/寫(xiě)功能;
(3)省略所有的掛起功能;
(4)工作模式固定為突發(fā)式讀、單個(gè)式寫(xiě);
(5)數據延時(shí)固定為3個(gè)時(shí)鐘周期;
(6)刷新模式只使用自動(dòng)刷新方式,器件空閑時(shí)即處于連續的自動(dòng)刷新?tīng)顟B(tài);
(7)器件僅在上電后進(jìn)行一次初始化,不能改變工作模式;
(8)突發(fā)方式固定為順序方式,突發(fā)長(cháng)度固定為整頁(yè);
(9)只使用帶預充電的讀/寫(xiě)指令;在每次讀/寫(xiě)操作完成后,即啟動(dòng)一個(gè)自動(dòng)刷新周期。
經(jīng)過(guò)以上簡(jiǎn)化的狀態(tài)機如圖3所示。
2.4 SDRAM控制器的EPLD實(shí)現
為了實(shí)現上述簡(jiǎn)化的SDRAM控制功能,采用一片ALTERA公司生產(chǎn)的EPLD器件MAX7256ATC144-6。圖4是任意波形發(fā)生器SDRAM控制流示意圖。由于具體編程要涉及許多細節問(wèn)題,在此不做贅述,其主要功能如下:
(1)通過(guò)ISA總線(xiàn),實(shí)現與CPU的接口,接收波形數據和讀命令;
(2)上電自動(dòng)初始化;
(3)生成23位(8M字存儲器空間)的線(xiàn)性地址,并按行列復用的方式輸出;
(4)生成SDRAM的控制信號,完成讀、寫(xiě)和自動(dòng)刷新功能;
(5)控制FIFO,以解決SDRAM刷新和波形長(cháng)度不是頁(yè)長(cháng)度的倍數問(wèn)題。
雖然完全應用SDRAM確實(shí)比較復雜,但只要本著(zhù)“夠用就行”的原則,對其功能進(jìn)行合理的簡(jiǎn)化,設計出具有特殊需求、適用于特定條件的SDRAM控制器是完全可行的。目前,筆者已將基于SDRAM的任意波形發(fā)生器應用到多個(gè)研發(fā)項目中。
參考文獻
1 K4S641632C Data Sheet. Samsung Inc, June 1999.
2 MAX7000A Data Sheet. IDT Inc, October 2000.
3 宋萬(wàn)杰.CPLD技術(shù)及應用.西安:西安電子科技大學(xué)出版社, 2001
評論