版本 V1.0
这个教程:
该系列 FPGA/CPLD 需要用到 Quartus II 进行逻辑综合,使用自有的软件 Supra 进行 Map, Place & Route 等。
首先安装 Quartus II 13.1 以及相应版本的 Cyclone IV 系列器件库。
官网传送门
另外别去下最新版,我踩过坑了()
至于 Quartus II 的正确安装方式,请自行搜索。
然后安装 AGM 的软件 Supra,下载链接可以在 官网的这里 找到。
在等待百度云下载结束的一天内,您可以先去干点别的。
以 Windows 系统为例,解压下载到的 Supra 压缩包到合适的位置。
Supra 无需安装,启动时运行 bin/Supra.exe 即可。
运行 Supra,选择 File - Project - New Project: 新建一个叫做 blinky1280 的工程,按图填写好工程目录和工程名称,点击 Save。
由于我们需要使用内部的 PLL,所以需要先创建 IP。 在 Supra 中创建 IP 的步骤如下,选择 Tools - Create IP - Create PLL : 这里我们将该 IP 生成的 Verilog 模块命名为 inpll;PLL Type 选择 PLLX;Input Frequency 随便写;Feedback Mode 选择 NO_REFERENCE;output count 选择 1;Output 1 的输出频率填写为 25MHz;点击 Generate: 下面会打印出实际且大概也不太准的频率。 然后在工程目录下会生成 inpll.ip 和 inpll.v 两个文件,前者需要在编译时在 Supra 中引入,后者则是点灯代码中需要例化的 PLL 模块原型。
点击 Tools - Migrate,按照图中填写工程细节:
点击 Next 后,运行 Quartus II,打开工程(目录下的 blinky1280.qpf),该工程中自动包含了一个 blinky1280.v。
打开该文件,并编写点灯代码:
module blinky1280 (
input wire clk,
input wire rst_n,
output wire led,
output [17:0] gpio
);
wire clk_pll_o;
inpll pll_inst (
.clkin(clk), // PLL.clkin MUST connect to PIN_XX_GB
.clkfb(clk_pll_o),
.pllen(1'b1),
.resetn(rst_n),
.clkout0en(1'b1),
.clkout1en(1'b0),
.clkout2en(1'b0),
.clkout3en(1'b0),
.clkout0(clk_pll_o),
.clkout1(),
.clkout2(),
.clkout3(),
.lock()
);
reg [24:0] counter;
assign led = counter[24];
assign gpio[17:0] = counter[23:6];
always @(posedge clk_pll_o or negedge rst_n) begin
if (!rst_n)
counter <= 25'b0;
else
counter <= counter + 1;
end
endmodule
保存该文件。 然后,确定一下将 PLL IP 设置为 Design Partition: 选择 Quartus II 中的 Tools - Tcl Scripts,选择目录下的 af_quartus.tcl 并运行:
当 Quartus II 完成逻辑综合后,回到 Supra,点击 Next: 在这里先不要点 Finish,先打开工程目录下的 blinky1280.asf 分配引脚:
set_location_assignment PIN_13 -to clk
set_location_assignment PIN_48 -to led
set_location_assignment PIN_41 -to rst_n
set_location_assignment PIN_9 -to gpio[0]
set_location_assignment PIN_11 -to gpio[1]
set_location_assignment PIN_12 -to gpio[2]
set_location_assignment PIN_14 -to gpio[3]
set_location_assignment PIN_15 -to gpio[4]
set_location_assignment PIN_16 -to gpio[5]
set_location_assignment PIN_17 -to gpio[6]
set_location_assignment PIN_18 -to gpio[7]
set_location_assignment PIN_19 -to gpio[8]
set_location_assignment PIN_20 -to gpio[9]
set_location_assignment PIN_22 -to gpio[10]
set_location_assignment PIN_23 -to gpio[11]
set_location_assignment PIN_25 -to gpio[12]
set_location_assignment PIN_42 -to gpio[13]
set_location_assignment PIN_43 -to gpio[14]
set_location_assignment PIN_44 -to gpio[15]
set_location_assignment PIN_45 -to gpio[16]
set_location_assignment PIN_46 -to gpio[17]
保存,其他参数默认就行,点击 Finish,Supra 就会开始 Place & Route。 一切顺利会输出这样: 如果不顺利,那就自己多试试,解决不了建议换回 Altera,或者期待天降原厂 FAE
准备一个 USB Blaster,我试过淘宝十几块的和正点原子的,都可以用,区别是便宜的慢。
先将 USB Blaster 按照引脚定义对应连接到板子上,然后板子上电,将 USB Blaster 接入电脑。
在 Supra 中打开 Tool - Program,点击 Query Device ID;
AG1280Q48 的 Device ID 是 0x00120010,如果正确连接会读到这个数值。
选择刚刚生成的烧录文件,其中:
这里以 SRAM 为例。烧写成功如下图,这时板子上的灯应该就会闪了。 用示波器测量其他引脚,能看到方波输出:
将点灯后的板子用立创商城的防静电袋子装起来,这里使用了这个板子上用的 LDO 的袋子。
里面还需要放上每次打板送的干燥剂,并尽量排出空气:
然后找个地方摆起来。
吃灰时需要注意,避免外力挤压;避免滑落后踩到;避免不慎食用;不要加入鸡蛋。
教程 1 涉及到的代码及烧录文件见附件,可用于快速测试好坏。
其他参考: 【LED灯屏控制器】国产FPGA之 AG10KSDE176 初探(1) - ReCclay 该链接中的网盘链接包含 Supra 的使用手册 【LED灯屏控制器】AG10K 烧录程序(2) - ReCclay AGM技术问题解答集锦-海振远科技 (我没去要这个的完整版
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持