大猪蹄子的个人博客

大猪蹄子

【技术 Gowin-1】常见高云FPGA使用问题汇总

2026 / 7 / 31

语法和基本通用硬件常识这里就不提了

软件相关

0、Place & Route卡30%、70%不动了

  • 高云自己卡Bug了,去Project->Configuration->Place & Route下的Place和Route选项,把Place Option从0改成1 2 3随便。实际就是改了布局布线策略优先级,管他呢,能过就行。

1、Error unroute xx了

  • 暂时没救。尝试改改代码当随机种子炼金吧

2、资源爆了

  • 注意是不是忘了删ila了,这玩意也会吃很大资源

  • 注释点模块,至少让工程能够顺利编译完,展开Hierarchy看看各个模块资源消耗情况自行优化

3、ERROR(PR2017):'xxx' cannot be placed according to constraint , for the lacation is a dedicated pin (DONE/SSPI/CPU/JTAG)

  • 用到特殊管脚了,去Project->Configuration->Place & Route下的Dual-Purpose Pin,把对应报错的选项勾上Use XXX as regular IO

4、ERROR(EX3444):'logic' is an unknown type

  • 高云工程默认是Verilog2001语法,去Project->Configuration->Synthesize下面General ,把Verilog Language改成SystemVerilog 2017即可

5、指定top文件/自动编译的top文件不对

  • 高云的top模块不指定的话是自动选择的,有可能选错;或者有时候会手动指定一个子模块为top,去Project->Configuration->Synthesize下面General,在Top Module里输入指定的Top 名称

6、ERROR(CT1136):Bank 0 vccio(3.3 )is locked by other constraint or embedded port, conflicting BANK_VCCIO set by 'out_buf':IO_TYPE = LVCMOS18 in the same bank

  • 首先你得知道FPGA的所有IO是一组一组的,每一组可分配不同的电压以满足不同的通讯协议

  • 基于以上,你就得知道同一组内的电压应该是一致的,你不能放个LVCMOS18的KEY,又放一个LVCMOS33的LED(这个约束在高云工程的xx.cst里)

  • 明白这个道理后,就去Pin Planner,点击IO的BANK排一下序,看看报错的这个Pin所属的BANK下用了哪些IO,应该有冲突的(LVCMOS25和LVDS25、STTL18和LVCMOS18,后缀都是相同的不算冲突)

  • 然后自己在cst文件里把同一Bank的IO约束改成同一电平的就行了

  • 可能的错误原因一:你踏马自己左手抄个LVCMOS18的约束,右手抄个LVCMOS33的约束打架了,自己检查统一一下

  • 可能的错误原因二:其实你并不清楚这个IO该给什么,随便给了一个就和别的冲突了。比如按键和DDR3在同一个Bank时,按键的电压约束肯定要写成DDR3的1.5V或者1.8V。毕竟这玩意随便给个就能用,DDR3的约束你又不能改。

  • 可能的错误原因三:被内部资源无形的大手子限制了。比如在GW2AR的手册里有写,带SDRAM的型号IO BANK VCC限定了3.3V。这个时候即使你并没有用到SDRAM,IO约束写1.2V也会报错。

  • 最后你问为啥例程也有这个问题? 问得太好了,因为当初写这些例程的时候,用到的IDE版本过于上古,这个问题并不会报错。

7、仿真支持

  • 目前高云平台的主流仿真工具为modelsim,自行百度怎么装,或者看我Quartus安装的图文里有免费版的流程

  • 先在Modelsim里创建一个工程

  • 导入用户自己的v文件,比如top.sv

  • 导入IP对应的xx.vo文件,比如pll.vo

  • 导入你用的芯片的v文件,比如gw2a.v

  • 编译,然后从top module开始仿真run

8、DDR3模型去哪儿找

  • 一般用镁光的话,百度镁光DDR3 SDRAM 仿真模型

9、带IP仿真时间过长不拉高init

  • run 500ms再说

10、ERROR(RP0007):There is no SSRAM resource in current device.

  • 可能的错误原因一:你型号选错了,高云对于同一个芯片有带SSRAM和不带SSRAM版本

  • 可能的错误原因二:你IDE版本不对,新版IDE把这个型号的SSRAM支持给删了,你还在用老IDE的工程

硬件相关

0、下载时JTAG找不到Device了/找不到JTAG端口/USB不识别

  • 经典问题哈,如果你是第一次就这样,大概率是电脑的问题,包括端口/驱动等,换电脑试试或者问问群友debug一下,不好说

  • 如果你在USB Cable Setting的Port能识别到两个,换另一个试试

  • 如果你是sipeed开发板,那个板载下载器就是不如FT2232H。忍着,换USB线,换USB端口,换电脑,换人

  • 如果是冬天,可能FPGA真静电打寄了。毕竟我就打坏过好几个,还是不同厂家的

  • 如果你是138/60K用USB供电,有可能是USB功率不够导致FPGA功能异常;如果下崽器和开发板两个USB同时挂在一个USB Hub而且还没有独立供电那种,那下崽器都有概率起不来

1、设计USB供电20/25/60/138K开发板(尤其是板载JTAG)够吗

  • 看你的USB是从哪儿来的

    • 首先,USB规范就写了(USB2 0.5A/USB3 0.9A),如果你把握不好,就找个USB3的座插

    • 其次,现在的电脑远不止这点能力,以我手上的多年前的台式鸡为例|

  • 看你用什么板子

    • 以Sipeed的20K和60K/138K裸核心板+基本外设为例(25K新工艺+无DRAM设计,是个USB都带的起来),20K跑IO点灯+单5640+DDR3+HDMI大概1.5W(板载FT2232H+0.4W);60/138K跑IO点灯+双5640+DDR3+HDMI大概2.3W(板载FT2232H+0.4W)
  • 所以理论上你电脑只要有个好一点的USB3还是够用的

2、把引脚复用成普通IO后+固化进FLASH=JTAG扫不到Device了

  • 通常是FPGA启动后把JTAG相关的IO复用成普通IO了,一般尝试短接FLASH任意数据脚到GND或者俩短接再上电,不让它启动就可以正常下载了(先擦FLASH吧

3、软排线分不清怎么插

  • 把排线上标数字1或者特殊标记的那一头插入底座也有标数字1或者特殊标记的那一头

版本更新

260731:初始版本
260926:更新USB功率说明