天天看點

FPGA開發之問題二

11、問 :ISE 中的 PAD TO PAD CONSTRAINT 是否是包括輸入輸出的 pad 時延之和再加上輸入輸出之間的組合邏輯的時延?還是隻是輸入輸出之間的組合邏輯的時延?

答 :Xilinx PAD-to-PAD contraint 的确涉及到輸入輸出 PAD 時延 . 這從布局後時序報告中可以看出。

12、問 :寫了一個 vhdl 的小程式 , 可是在 processes of soure 裡的 implement design 裡隻有 translate,fit, 卻沒有 map ,place&route. 這是為什麼呢 ? 請大俠們幫忙答疑解惑 ! 原來用的上 xc9500xl 系列 的 xc9572xl,結果怎麼都沒有 place&route. 後來換成 virtex2 系列的 xc2v80 就出現 了 , 這是什麼原因 ?

答 :cpld 是沒有 place&route,是 fit。

13、問:SpartanIII 晶片采用 master serial 方式配置時,是不是也需要通過下載下傳電纜把資料下載下傳到配置 ROM中?那麼下載下傳電纜應該如何連接配接?是采用 JTAG 方式嗎?那 M2,M1,M0 應該設成什麼?

答 : serial 串行。隻需用到 d0。其他 d1-d7 可用于 user io。速度慢,不過一般選這個,Parallel 并行。需要用到 d0-d7. 速度快,如果 jtag 鍊有多于一個 FPGA,則第一個用 master,其他用 slave。如果隻有一個就用 master。每個 FPGA 可以通過 m0,m1,m2 進行設定。配置 FPGA 或 prom 的時候都會用到 jtag。

一般調試的時候隻需配置 FPGA 就可以了。實際使用時需要先配置 prom,這樣每次加電時 FPGA 會自動從 prom 中加載配置檔案。當然配置模式需要設對。

jtag 信号需要

tms - jtag 模式

tdi -輸入

tdo -輸出

tck - jtag 時鐘

gnd -地

vcc -給 jtag 線纜供電。我用的是 2。5v 供電。不過也有 3.3v 供電的,需加串行電阻吧!配 spartan3 的時候 jtag 線纜很是個問題。最好選擇 cable IV。

用 cableIII 的話可能會有問題,看你運氣了,呵呵。

14、問 :PROM 中的配置資料是如何輸入進去的呢?也是通過下載下傳電纜嗎?是不是先要把 M2,M1,M0 設成JTAG 模式,通過下載下傳電纜把資料下載下傳到 PROM 中,然後再把 M2,M1,M0 設成 Master Serial 模式,這樣每次啟動時配置 PROM 就可以自動加載資料了?

答 :jtag tdi---> tdi FPGA tdo---> tdi prom tdo--->jtag tdo.

在做原理圖的時候 jtag 鍊需要将 FPGA 和 prom 鍊起來。這樣 impact 就可以找到在 jtag 鍊上的 2 個裝置。( 現在假設隻有一個 fpag 和 prom)接下來你可以選擇隻用 bit 檔案配置 FPGA,或者,事先用 impact 将 bit 檔案生成一個 prom 配置的mcs 檔案 ( 這裡可以根據 serial 或者 Parallel 方式生成不同的 prom 檔案 ),再用這個 mcs 檔案配置prom。一般情況下設成 Master Serial 就可以了。在用 jtag 配置的時候這個模式好像沒什麼關系。現在我的 prom 還沒焊上去呢。呵呵,是以不好說。你覺得不保險,就把 m0,m2 做成跳線。

15、問 :現在的 vhdl 語言程式設計很多是行為模式,請問如何估算程式會消耗的最大資源問題?考慮程式設計的資源消耗有些什麼具體的方程式和經驗?邏輯行為描述是否資源消耗很大,如何優化?

答 : 大部分是先選擇同一系列較大的晶片來設計,綜合後看報告,然後再根據實際情況移植。對于一個設計,消耗的資源不要超過 80%。還有就是一些 IP Core 生産向導的最後一步也會提示你消耗多少資源。

16、問 :FPGA 每次上電時,要從 PROM 中讀取配置資訊,那麼一定需要時鐘,該時鐘是從哪裡來的呢?FPGA 是否存在一個時鐘振蕩器來提供這一時鐘?

答:master 的 FPGA 的 cclk 腳在上電的時候會自動産生配置時鐘,這個時鐘應該是内部 rc 電路産生的 ( 個人猜測 ),如果是由外部晶振産生的話,那沒有晶體的系統 ( 比如差分接受資料 ) 不就用不了 FPGA 了?資料手冊中有寫 : Master Slave 主串 方式下 FPGA 自己産生時鐘。不需要外接 RC。

17、問 :當 ise 調用 ip 核時,用 synplify 是不是不能綜合 ip 核啊?隻能用 xst?

答 :對于 IP 的綜合,因為是加密,是以綜合器都是認為是黑盒子。 對于綜合器而言,它隻用知道端口定義和名稱就行了。是以,你在第三方綜合工具,不能看到底層的結構,綜合器沒有對此綜合。在下一步适配和布線,軟體才将 IP 解析為硬體源語,形成硬體結構。在 Matlab 中使用 VHDL 或 Verilog 也是同樣的。實際中, 我們關心的隻是輸入什麼樣的值,就能産生什麼樣的結果。 也是一種知識産權的保護措施。在賽靈思裝置中,能夠直接調用第三方工具。而在 Altera 裝置中,需要在第三方工具中,生成網表文

件 edf 再到 Quartus 中進行适配布線。設計流程是這樣的。

18、問 :我做的 ddr sdram 控制器 , 在軟體仿真階段完全正常 , 但是到了 FPGA 驗證的時候出現了很奇怪的現象 :我的 FPGA 用了 4 片 DDR 并行工作 ( 就是當作一片 DDR 一樣的發指令 ) 現在遇到的問題是發現在 active 後 , 連着 3 個 write, 然後一個 write with aotoprecharge,burstlength=4, 然後再讀出來 ,發現其中有 3 片的資料在讀寫之後是一緻的,然而,另外的一片的這 16 個數沒有寫進去。該現象與頻率無關。然後在緊接着的位址上繼續寫 , 讀,所有的資料都是正确的。我懷疑 initial 沒有做好 , 加了

好多 refresh,precharte, 結果都一樣,我很奇怪,為什麼 3 個片子上的資料都是正确的,隻有一個片子的前幾位是錯誤的。有可能是 initial 沒有做好?還是什麼原因 , 各位大俠有沒有遇到這種情況?我用開發闆上提供的仿真程式 , 發現沒有這種錯誤 , 對比 p&r 後的報告 , 我的程式和開發闆上的時間參數差不多 ( 基本一緻 )。暫時就能總結這麼些現象 , 請各位大俠們指教一下,就是幫我猜猜也好,謝謝!

答:DDR SDRAM 的設計很關鍵的是實體層讀資料如何捕獲的問題。遠遠不止是 RTL coding 的問題。要做 DEBUG 首先要了解你的器件型号,時鐘頻率和 DDR SDRAM 器件型号。要關心所有的細節。DDR SDRAM 器件有工作頻率下限,你的設計不會頻率太低吧。

如果你的設計DDR SDRAM 頻率不高,建議不用自己做了,用 XIILINX 網上公開的參考設計就可以了。至少可以參考 MIG 工具生成的代碼,和你自己的代碼進行對照,用于參考。上這個網頁http://www.xilinx.com/products/d ... ce/xaw_dram_ddr.htm。然後注冊并下載下傳 Memory Interface Generator (MIG) 工具,有個中文網站也提供資料 http://www.21ic.com/news/n4748c89.aspx,不過不知道版本是不是最新的。另外,有一個叫做 MPMC 的 High Performance Multi Port Memory Controller (XAPP535) 可以直接拿過來用,連多端口通路仲裁器都帶有了。

http://www.xilinx.com/gsrd/

http://www.xilinx.com/bvdocs/appnotes/xapp535.pdf   

如果懷疑是實際調試問題而非一般代碼設計問題,建議 review 晶片的複位初始化過程,注意寫模式寄存器之前需要足夠的等待時間。可以從 micron 網站下載下傳一個 晶片模型,例如 http://download.micron.com/downl ... ddr2/512Mb_ddr2.zip,做一個完整的 RTL 仿真,或者利用 MIG 生成的 TESTBENCH,把你自己的代碼替換進去做前仿真。

19、問 :ADC 的采樣速率為 250MHz, 希望用 FPGA 實作如下算法 :Pi=arctan[(Si+1+Si)/(Si+1-Si)],Si 和 Si+1 為相鄰的兩個采樣點 .計算得到 N 個 Pi 的值後再累加 .

請問如果需要的資料點數為 100 點 , 可以在 1uS 内算出來嗎 ? 如果可以 , 用哪個片子比較合适呢 ? 采用什麼樣的設計比較合适呢 ? 請高手指點 .

答 :1,如果是 ADC,Si 和 Si+1 為相鄰的兩個采樣點 . 數字信号隻能取“0”或“1”,有 4 種可能的情況,

可以用用查表法。

         2,樓主是不是要處理模拟信号,應該不是 1 中所描繪的那樣。關注多少位的 ADC 啊,可以用 IPcore中的 cordic 子產品,直接求。另外對于這個速度來說,可以選擇 VII 以上的晶片,速度可以用 -7 或更高的,

隻是建議 :

       1、賽靈思的 IPcore 中的 cordic 子產品可以處理三角函數,開根号等,另外有專門的除法子產品可以使用,先算除法,然後用 cordic 就可以了。

       2、對于 250M 的速度,個人覺得- 7 的速度可以了,當然,V4 中有更高速度等級的。如果你的後續處理要有 FIR 之類的操作,V4 中有号稱可以處理 400M 速率的 FIR 濾波器。不過布線的時候要很注意,

接口設計可能有些困難。

20、問 :分頻應該是個很簡單的問題。但是我有些疑問,假如我的時鐘是 2MHz,需要 8Kbps 的資料源,那麼它們之間的分頻是不是 211/23=256 次分頻。定義一個 c(7 downto 0) 的計數器就可以了。但是 2MHz的時鐘不是 2048KHz,而是 2000KHz?

答:一般來說,所說的時鐘的 K,M 等應該跟數學上的概念一樣,而對于計算機來說,僅在表示容量的概念上,K 才是 1024。