以下是如何通过AS接口进行固化的过程介绍
实验软件:quartus II 9.1
实验板子:terasic DE0
- 知识概论:JTAG模式和AS模式的用途以及区别是什么呢?
答: fpga支持JTAG Programming和Active Serial(AS) Programming两种mode。
①通过JTAG模式下载的程序,分为 .sof 和 .jic 两种。其中 .sof 文件是写入FPGA的SRAM/EPCS (Flash)里的,断电后数据会消失,需要重烧,一般运用于仿真调试。通过JTAG模式把.sof文件转化为.jic文件进行下载,烧写到配置寄存器里,上电后写入FPGA,可以实现间接固化,下一篇笔记会写到 .jic 具体固化过程】;
②通过AS模式下载的文件是.pof ,是直接写进FPGA的配置芯片的,断电后不会消失。 - AS固化步骤
①将编写好的程序进行编译(点工具栏上那个紫色的小三角编译)
②点击File→Convert Programming Files…→在Configuration device那里选择板子对应的型号(可以查阅板子手册,简介里就有写)。此处我通过查阅手册(见下图),选择EPCS4
→在Input files to convert下面的框框里选择SOF Data→点击右侧Add Sof Data,在弹出框里选择生成的sof文件,打开→选中刚刚加进来的.sof文件→点击右侧的properties→在弹出框里勾选Compression,点击OK →点击右下角的Generate→会弹出框显示Generated…(你的文件名).sof Successfully【注意:如果显示unsuccessfully,应该是你的Configuration device写错了,一定要查看板子上对应的型号】
③在板子上有一个拨码开关,当开关拨到上边时是JTAG接口模式,当开关拨到下边时是AS接口模式。这里我们把开关拨到下边,也就是PROG方向。
④Tools→Programmer→ Mode选择Active Serial Programming,会弹出一个框问你是否确定要改:【some devices in current device list cannot be added to selected Programming mode Active Serial Programming. Do you want to clear all devices current device list and switch to selected mode?】选择“是”,此时会看到原先方框里的.sof文件被删掉了→点击左侧Add file…,选择刚刚生成的 .pof 文件 →start
⑤当Progress为100%时,就说明烧录好了。
⑥把板子电源断掉,然后重新开启,会看到七段数码管已经烧录成功。【如图所示,是我烧录好的“0000”】
附:
我这个实验最终想要的结果就是实现“0000”稳定常亮。下面是我这个实验的verilog HDL代码和BDF原理图。
代码
module testone(
OUT);
output [7-1:0] OUT;
reg[7-1:0] OUT;
always @(*) begin
OUT=7'b 1000000;
end endmodule
module testonee(
OUT);
output [7-1:0] OUT;
reg[7-1:0] OUT;
always @(*) begin
OUT=7'b 1000000;
end endmodule
module testoneee(
OUT);
output [7-1:0] OUT;
reg[7-1:0] OUT;
always @(*) begin
OUT=7'b 1000000;
end endmodule
module testoneeee(
OUT);
output [7-1:0] OUT;
reg[7-1:0] OUT;
always @(*) begin
OUT=7'b 1000000;
end endmodule
其实就是四个相同的模块并列,每个模块控制一个七段数码管。可以把四个数码管用一个模块控制。因为是恒定常亮,所以可以不用添加时钟模块。
BDF原理图