前言: 學習Lattice的芯片開發的過程中,很多實際開發過程中遇到的問題是沒辦法繞過的,雖然我今天被繞了一天(此句多余,單純記錄美好心情哈哈哈哈)將這些解決方法梳理成文章供大家參考,十個問題組成一篇文章。
文章目錄
- 1.兩個JTAG如何同時在線調試?
- 2. 添加設備列表中沒有的flash型號?
- 3. Reveal的信號不會更新?
- 4. Spreadsheet引腳顯示unconnected
- 5.Lattice文檔說明
- 6.傳送門
1.兩個JTAG如何同時在線調試?
在programmer界面 點擊Detect Cable會顯示兩個板子通過兩個USB Port連接到了電腦上。在兩個板子調試時,打開兩個Diamond,可以先后連接JTAG以便確認FTUSB-0對應的板子是哪一個,后連接的則對應FTUSB-1。在兩個Diamond中分別選擇不同的Port下載文件即可。
而Reveal文件需要在兩個bit文件燒寫完成之后依次點擊使用。需要說明,如果一個Diamond的reveal正在等待觸發信號,而另外一個開始燒寫bit文件,通常都會出錯。在各自燒寫完畢后,打開reveal文件,可以看到右上角有Cable Connection Manager按鈕,單機此按鈕,在彈出的對話框中單機detect按鈕,選擇該工程對應的USB Port點擊OK即可。
2. 添加設備列表中沒有的flash型號?
在Programmer界面,選擇Edit–>Add Device在彈出的對話框中選擇Add,然后在新彈出的對話框中,添加板貼Flash的參數依次包括設備名稱、封裝、廠商、容量、設備ID等內容,這些內容在Flash手冊中都會標寫。這里添加后,在固化操作時flash列表中就有新添加的這一項了。
3. Reveal的信號不會更新?
當修改了源文件之后,有時會發現想把新寫的信號添加在Reveal Analyzer中監控,但是會發現在源文件中刪除的信號還在,而新加的信號并沒有更新。如果沒有刪除原來的信號,工程可以照常編譯,執行綜合—place—bitstream file等過程,Reveal Analyzer依然不更新。這時需要打開Reveal Analyzer的界面,然后找一個IP核重新生成一下即可。這可能是軟件的bug,anyway,這么做是可以解決問題。
4. Spreadsheet引腳顯示unconnected
明明在Top文件中添加了輸入或者輸出管腳,并且工程也已經生成了bit文件,但在Spreadsheet View中依然顯示未鏈接,這通常是和這幾個引腳相關的邏輯有問題。用第一篇文章的led demo舉例子如下:當代碼寫成如下
module LED_demo
(
input clk_i, //輸入系統時鐘
input rst_n, //輸入復位信號
output led1, //輸出led1
output led2 //輸出led2,與led1取反
);
parameter CLK_DIV_PERIOD=125_000_000;
reg clk_div=0;
assign led1=clk_div;
assign led2=~clk_div;
reg[31:0] led_cnt=0; //分頻用的計數器
always@(posedge clk_i or negedge rst_n)beginif(!rst_n)beginled_cnt<=0;end else if(led_cnt==(CLK_DIV_PERIOD-1)) beginled_cnt<=0;end else beginled_cnt<=led_cnt+1'b1;end
endalways@(posedge clk_i or negedge rst_n)beginif(!rst_n)beginclk_div<=0;end else if(led_cnt<(CLK_DIV_PERIOD>>1)) begin clk_div<=0;end else beginclk_div<=1;end
end
endmodule
這是一段沒有任何問題的代碼,綜合前的電路結構圖如下所示:
如果我把代碼中 reg[31:0] led_cnt=0; 修改為 reg[23:0] led_cnt=0; 這時SpreadSheet View中會顯示引腳led1、led2為Unconnected,此時綜合前的電路結構圖如下所示,由于led_cnt的位寬小于常量125_000_000所以clk_div恒為0,綜合工具把這里的代碼直接優化成如下圖所示的電路結構。也就是這個隱蔽的問題造成了顯示unconnected的情況。
5.Lattice文檔說明
Lattice的發展過程中更新迭代了很多產品,就目前而言,一個IP核可能有三份文檔,應用在不同的平臺。以tri speed ethernet mac ip為例,他有三個文檔,不同的文檔適用不同的產品類型,大致是遠古時代的ispLever開發的ORCA系列,還有latticeECP系列,以及新一代的其他器件。開發IP的時候需要找對應的文檔開發,有些區別不大,但有的甚至信號名稱都不一樣。
- Tri-Speed Ethernet IP IP Version: v2.0.0
- 10/100 and 1Gig Ethernet Media Access Controller
- Tri-Speed Ethernet MAC IP User Guide
6.傳送門
- 我的主頁
- Lattice進階之路匯總導航
END |
📡文章原創,首發于CSDN論壇。
📡歡迎點贊??收藏??打賞💵💵!
📡歡迎評論區或私信指出錯誤💉,提出寶貴意見或疑問😱。