前言:對FPGA的板極調(diào)試,,對于大部分的工程師都是一個比較麻煩的事。這樣子的事情在開發(fā)的初期階段尤其突顯,。我就常常有這樣子的困擾,,比如說,,對于一個SDRAM,我希望從我的PC發(fā)送一個指令,,可以使得FPGA對SDRAM進行寫操作或者讀操作,,對于我還不是很熟悉的芯片,雖然我拿到硬件,,也熟讀了數(shù)據(jù)手冊,,但我還是希望可以實時配置它,驗證它的功能,。就這樣子,,趁著這個機會設(shè)計與驗證了基于RS232的wishbone控制器。
對于PC與FPGA的通信,,首先想到的當(dāng)然是RS232了,,即使說它的速度跟性能無法都跟其它的通信方式相比,但是,,有兩點讓我們無法舍棄它:簡單,、穩(wěn)定。LX9 Microboard上邊的USB-UART更是使得RS232擺脫了DB9這樣龐大的接口器件以及使你不需要到處去找串口連接線,,畢竟現(xiàn)在來說,,找一個串口線比找一個USB線要困難n倍。對于FPGA內(nèi)部總線,,我當(dāng)然是選擇了wishbone總線,,相關(guān)的總線協(xié)議,可以參考資料:Combining WISHBONE interface signals.pdf 百度之即可,。推薦中文介紹網(wǎng)頁:
http://www.shangshuwu.cn/index.php/OpenRisc_CPU%E7%9A%84Wishbone%E7%89%87%E4%B8%8A%E6%80%BB%E7%BA%BF
最推薦的方式當(dāng)然是:www.opencores.org 了。
一,、控制器設(shè)計框圖:
二,、發(fā)送接收方式
其中,每次發(fā)送數(shù)據(jù)之前,,發(fā)送幾個數(shù)據(jù),,表明是wishbone總線,我采用的方式是:
當(dāng)數(shù)據(jù)八位八位的接受了之后,,使用狀態(tài)機提取地址以及數(shù)據(jù)即可,。
三、仿真
仿真圖如下:使用uart的model往設(shè)計模塊寫入地址以及數(shù)據(jù)
32'h0001_0108 , 32'h0000_0041
32'h0001_01ff , 32'h0000_0001
32'h0001_0109 , 32'h0000_00d1
32'h0001_0103 , 32'h0000_0006
32'h0001_0109 , 32'h0000_00c0
32'h0000_0010 , 32'h0000_000E
32'h0000_0011 , 32'h0000_00E8
32'h0000_0012 , 32'h0000_00A8
32'h0000_0013 , 32'h0000_00C8
32'h0000_0014 , 32'h0000_00C6
32'h0000_0015 , 32'h0000_0005
32'h0000_0016 , 32'h0000_00c2
32'h0000_0017 , 32'h0000_0002
因為時間倉促,,接收模塊還沒有怎么寫好,,只是實現(xiàn)了從RS232到wishbone總線單向。
四,、板極功能驗證:
首先,,當(dāng)然要調(diào)通串口啦,。安裝USB-UART驅(qū)動以及下載驅(qū)動,這個直接看開發(fā)板資料就可以了,,寫的非常清楚明了,。串口測試是否正常,我是是使用了我很久以前寫的兩個個VHDL文件,,只有直接發(fā)送模塊,,這些模塊,在網(wǎng)絡(luò)上應(yīng)該到處都是,。然后分別在電腦串口軟件以及chipscope上觀察數(shù)據(jù)是否正確即可,,這個大家應(yīng)該都蠻熟的了。
然后,,把自己曾經(jīng)用到的IP放進去,。為了方便使用示波器觀察數(shù)據(jù),我把一個I2C模塊以及一個SPI配置的DAC ( TLV5626 )的模塊放進去,,然后輸出到保留引腳上,。
下面是應(yīng)用仿真
建立工程以及綜合下載那些瑣碎事,就不在這里多扯了,。
結(jié)果驗證:
下面是示波器觀察I2C的結(jié)果:
可以對比仿真結(jié)果與示波器的觀察結(jié)果,,是一致的。
總結(jié):最近忙的東西比較多,,時間也比較有限,,自己對嵌入式那一塊也不是很熟,所以感覺沒辦怎么用到這個板子比較高級的地方,,其實,,如果可以做一個網(wǎng)口控制器的話,那就相當(dāng)?shù)?/span>high了,。
DB
2011.8.24