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