對於熟悉Intel FPGA的老(gong)司(cheng)機(shi)來說,外部存儲器的控制早已是輕車熟路,但是對於新手,DDR3/DDR2 的IP使用也許並沒有那么簡單,不過沒關系,駿龍的培訓網站(www.fpgadesign.cn)上有免費的視頻教程可以幫助大家快速的熟悉DDR3/DDR2 IP核的使用。今天我來分享下在使用DDR3/DDR2的IP時常有新手遇到的兩個錯誤的解決辦法。
1、Error (165050): The assigned location PIN B13 for DQ pin "DDR2A_DQ2" is not a legal location。
上面的錯誤提示是”DDR2A_DQ2”放在了一個非法的地方,也就是放錯了地方。對於DDR3/DDR2 IP的DQ,DQS,DM信號在FPGA上對應的pin不是想當然的隨便放置,他們有固定的位置,一般要遵循下面的幾個規則:DQ信號必須連接到FPGA的引腳名帶有DQS的pin(如圖一);DM信號必須連接到FPGA的引腳名帶DM的pin(如圖二);DQS、DM、DQ必須在同一個Mode中,且DQS、DM的高地位要和DQ的高地位對應,如DQS[0],DM[0]對應DQ[7:0], DQS[1],DM[1]對應DQ[15:8]。在一個Mode中會有一個DQS pin,一個DM pin和多個DQ pin(如圖三)。
圖一 FPGA中引腳名帶有DQS的pin
圖二 FPGA中引腳名帶有DM的pin
圖三 Mode(圖中有紅線和藍線分別標出了一個完整的Mod)
提示:查看同一個Mode的方法為:在Pin Planner的菜單欄選擇ViewàshowàShow DQ/DQS pinà In x8/x9 Mode。
只要按照上面的規則來綁定DDR2/DDR3的pin 就可以解決Error 1.
2、Error (169224): Too many output and bidirectional pins per VCCIO and ground pair in I/O bank 8 when the VREF pin D12 (VREFGROUP_B8_N0) is used on device EP4CGX30CF23C7 -- no more than 9 output/bidirectional pins within 12 consecutive pads are allowed when the voltage reference pins are driving in, but there are potentially 10 pins driving out。
上面的錯誤提示是: 但使用VREF pin作為輸入時,每12個連續的Pads不能有超過9個輸出或雙端口。這是因為DDR2采用的是SSTL-18的電平標准,需要將輸入和VREF電壓進行比較之后輸出才被認為是實際輸入(保證數據准備,抑制噪聲),所以FPGA中DDR2所在的Bank中的VREF pin 需要接1.8V的電壓。而在TOP 和Bottom Bank的VREF pin被使用時,每12個連續的Pads最多只支持9個輸出,在Right和Left Bank每14個連續的Pads最多只支持9個輸出。
但是對於一些IO數目比較緊張的項目,想把DDR2的地址線或控制線放在數據線周圍的pin上,但是Fitter的時候 Quartus 會報出上面的錯誤,這該怎么辦呢?只要在Quartus II 中按照下面的步驟使用Output Enable Group選項,將DDR2的CLK ,DQS,DM,DQ信號設置到到同一個Group中,就可以解決上面的錯誤了。使用Output Enable Group選項可以指導Fitter當作一個輸出使能組來查看指定的Nodes,以免違反使用VREF時的最大連續輸出Pads數目的規定。
在菜單欄中選擇AssignmentsàAssignment Editor,打開Assignment Editor窗口,在TO列最下面<<new>>處依次填入DDR2 IP 的所有CLK ,DQS,DM,DQ信號,並在Assignment Name處選擇Output Enable Group, 在Value處都填入一個相同的值(如圖五中的111222),然后在最左邊你可以看到Status處都打上了綠色的對號,這樣設置就完成了,保存,重新編譯,Fitter就可以通過了。
圖四
圖五
上面的操作完成之后,如果你打開工程目錄下的.qsf文件,你可以找到圖六中的約束語句,就是剛才你設置的約束條件。當然,你也可以直接的打開.qsf文件,參照圖六中的語句直接設置CLK ,DQS,DM,DQ的約束條件,並保存,也可以達到相同的效果。
圖六
Error 2 就這樣被解決了!