查看: 2201|回复: 0

高云gowin软件使用教程

[复制链接]

该用户从未签到

发表于 2021-11-12 14:51:17 | 显示全部楼层 |阅读模式
分享到:
高云gowin软件使用教程
国产FPGA是最近几年起来的产品,具有性价比高特点。高云FPGA,很多用户都用在LED,电机控制,PLC设备上。
开发板子采用GW1N-LV1QN48C6/I5 FPGA器件。具有低功耗,瞬时启动,高安全性,低成本,方便扩展等特点。本开发板价格价格便宜,板子扩张性容易,帮助用户比较快递进入国产FPGA学习能力。

开发板集成多个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文件,会跳到官方网站申请。

建立一个工程,选择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。
开发板上面下载线缆连接对应的管脚。

        插入gowin转接板和电源

         整个设备连接如下

选择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




image.png (31.24 KB, 下载次数: 0)






回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-9-22 04:08 , Processed in 0.119365 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.