工程文件在如下目录:
其中 leds.v是verilog文件
Makefile文件用于构建工程和管理文件
leds.v文件内容如下:
可以看到逻辑比较简单,counter寄存器计数,然后控制led灯的亮灭,这里的led有三个输入,
不同的组合会呈现不同的颜色。对应的led原理图如下:
Makefile文件内容如下:
这里的 io.pcf就是引脚绑定文件
可以看到 leds.v文件中的input ports和output ports在这个文件中都有绑定对应的引脚。
build这个target会使用yosys工具对verilog文件进行综合,使用nextpnr-ice40工具对设计进行布局布线,最后使用icepack工具生成.bin文件
这里yosys指定了三个option,可以使用yosys -help查看各个选项的功能,如下:
-p option
-p选项是指定需要执行的指令
synth_ice40是 Lattice iCE40 系列FPGA的综合指令
在yosys中可以使用helo 来获取指令的帮助信息。
打开yosys,如下:
synth_ice40指令的帮助文档如下:
这里的-json选项,是指定将design的信息写出到对应的文件,如果不指定,则不会将design信息写出到文件中。
最后的$(filename).v文件是输入的verilog文件。
在synth_ice40的帮助信息还中还有该指令会执行哪些操作的说明,如下:
nextpnr-ice40是Lattcie ice40 FPGA的布局布线工具,帮助信息如下:
其中–up5k是指定FPGA芯片的具体型号是iCE40UP5K
–package sg48是指定FPGA芯片的封装信息
–json
(
f
i
l
e
n
a
m
e
)
.
j
s
o
n
是指定
d
e
s
i
g
n
信息,这里
!
[
在这里插入图片描述
]
(
h
t
t
p
s
:
/
/
i
−
b
l
o
g
.
c
s
d
n
i
m
g
.
c
n
/
d
i
r
e
c
t
/
f
f
6
f
8657259
b
435
d
a
4
c
e
80
a
c
197
b
099
d
.
p
n
g
)
这里的
(filename).json是指定design信息,这里  这里的
(filename).json是指定design信息,这里这里的(filename).json是综合后生成的文件,应该是包含了netlist信息的文件。
–pcf是指定constraints文件,这里指定的是common目录下的io.pcf文件,都是引脚绑定信息。
这里有一个问题就是,没有指定timing constr文件,这个问题先放在这里。
–asc是指定输出的bitstream文件的名称
下面是icepack指令
可以看到$(filename).asc是input file, $(filename).bin是output file
当前目录只有leds.v和Makefile文件
执行>make build
可以看到生成了.json, .asc, .bin文件
下面是烧写程序。
prog_flash这target执行的操作是将生成.bin文件copy到$(ICELINK_DIR)目录下
icesugar开发板是支持将.bin文件拖拽到icelink 目录下进行烧写程序的。
将icesugar开发板连接到电脑,这里需要将设备连接到虚拟机上(开发环境在虚拟机上)
设置之后,就会出现iCELink目录,
如下:
执行>make prog_flash
此外,还有一种烧写方式,是使用tools目录下的icesprog工具
烧写方法如下:
至此,开源FPGA开发板icesugar开发环境体验完成.
关注公众号#Joey的自由世界#查看更多内容