高雲1N1開發板高雲gowin軟件使用教程

國產FPGA是最近幾年起來的產品,具有性價比高特點。高雲FPGA,很多用戶都用在LED,電機控制,PLC設備上。

開發板子採用GW1N-LV1QN48C6/I5 FPGA器件。具有低功耗,瞬時啓動,高安全性,低成本,方便擴展等特點。本開發板價格價格便宜,板子擴張性容易,幫助用戶比較快遞進入國產FPGA學習能力。

https://img.alicdn.com/imgextra/i4/713497691/O1CN01od2TdV26gWgxnzAdG_!!713497691.jpg

開發板集成多個GPIO接口和多個LVDS接口,電壓可以從3.3,2.5,1.8,1.2V選擇。用戶可以選擇不同電壓適配不同的IO口。其中每個VCCIO也是獨立供電,可以很簡單改裝成其他的不同bank不同電壓要求。

芯片資源GW1N-1的資源有1K的LUT4,並且還有4個18K SRAM快,一個PLL鎖相環。

封裝有最小的CS30的封裝,也有QN32,QN48,LQ100,LQ144這類封裝。灰色線代表是兼容封裝。其實芯片同等封裝都是類似的電源和地,IO管腳有差別。

板子上兩排引腳名稱都已經標記了鎖定管腳的名稱。用戶很容易使用該平臺。

2. 高雲FPGA軟件使用教程

         高雲設計軟件在 http://cdn.gowinsemi.com.cn/Gowin_V1.9.1.01Beta_win.rar 直接複製就可以下載,關於license 可以在官網申請就可以,但是必須要有公司名稱和電話號碼。

         雙擊桌面的 圖標進入軟件,設定軟件的license。 在help中選擇mange license。

選擇本地license文件。選擇對應文件browse 選擇文件。Save就可以保存設定。這個窗口還可以設定license文件,會跳到官方網站申請。

另外還得設定synplify軟件路徑。在個人用戶變量的LM_LICENSE_FILE設定gowin的 synplify的 編譯軟件的license位置。

建立一個工程,選擇FILE-NEW或者桌面quick start中new project

輸入工程的名字和位置.

選擇芯片類型GW1N系列,Device爲GW1N-1,Package選擇QFN48,SPEED選擇C6/I5.

 

把blink-led文件複製到工程中src中.

在design中增加文件.

   

 

選擇process選項卡

        

選擇synthesize綜合當前文件.

 

 

再雙擊user constraints,選擇floorplanner.

 

在打開的floorplanner的窗口,可以看到ports名稱,底部有幾個選擇項。

選擇I/O Constraints設定管腳位置,電壓。

 

Led[0]設定在11,IO Type設定爲lvcmos33,Led[1]設定在9,IO TYPE設定爲LVCMOS33,sys-clk50m在27管腳,IO Type爲LVCMOS33。

選擇保存文件。關閉floorplanner軟件。

         在主程序中,選擇design,看到有一個cst文件就是管腳約束文件,設定IO和電壓要求。

 

         再次選擇process,右鍵選擇configuration。配置其中DONE管腳爲普通IO管腳。

在配置窗口選擇,DUAL-PUROSE pin 選擇 USE DONE as regular IO,設定爲普通的IO功能。

         雙擊place&route 或者右鍵選擇run。

 

完成佈局佈線操作以後,選擇program device。

開發板上面下載線纜連接對應的管腳。

         插入燒錄器排線。USB電源暫時不插入。

        

         接入5V OUT在5V引腳。

         再接入JTAG的TDI,TDO,TCK,TMS以及GND。

選擇scan的按鈕,找到芯片。

選擇operation ,設定爲SRAM Program。Filename選擇impl/pnr/blink-led.fs文件,save保存

 

選擇箭頭,編程設備。

         上述是SRAM燒錄,這個燒錄掉電以後是不會存在的。

由於軟件存在bug問題,所以要關閉一次program軟件,再打開。選擇embedded flash mode,選擇embflash erase,program。選擇save。

 

再次選擇箭頭,燒錄內部flash。

如果再燒錄其他的模式,記住必要重新打開一次燒錄軟件。

 

代碼內容。blink_led.v

 

module blink_led
(
 
    input sys_clk50m, 
    output[1:0] led
);

 
//  wire sys_clk50m;
//  GW_OSC osc_inst ( .oscout(sys_clk50m)) ;
 

localparam clk500ms = 50_000_000;
reg[31:0] clk_count;

always @(posedge sys_clk50m)
begin
    if( clk_count ==clk500ms)
        clk_count <=0;
    else 
        clk_count <= clk_count + 1'd1;
end

wire led_temp;
assign led_temp =( clk_count> clk500ms[31:1]) ? 1'b0: 1'b1;

assign led= {led_temp,~led_temp};

//assign led =1'b0;

endmodule

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章