紫光FPGA开发全流程实战:从流水灯到FLASH固化
1. 紫光FPGA开发环境搭建
作为国产FPGA的重要代表,紫光同创的Pango Design Suite(PDS)为开发者提供了一站式的开发环境。记得我第一次接触PDS时,被其简洁的界面和流畅的操作体验惊艳到了,完全不像某些国外工具那样复杂难用。
PDS支持Windows 10 64位系统,建议使用2020.3或更高版本。安装过程非常简单,双击安装包后按照向导一步步操作即可。不过有个小细节需要注意:安装路径最好不要包含中文或特殊字符,否则后期可能会遇到一些莫名其妙的问题。
安装完成后,桌面上会出现PDS的快捷方式。启动软件后,你会看到一个清爽的主界面,左侧是工程导航栏,中间是工作区,右侧是属性面板。这种布局对于FPGA新手来说非常友好,不会让人感到不知所措。
硬件准备方面,你需要一块紫光FPGA开发板,推荐使用PGL22G芯片的型号。这个芯片的资源足够丰富,可以满足从简单逻辑设计到复杂系统的大部分需求。开发板上的外围设备也很齐全,包括LED灯、按键、数码管等,非常适合初学者练手。
2. 创建第一个流水灯工程
创建新工程是FPGA开发的第一步。在PDS中,你可以通过两种方式创建工程:双击主界面的"Create Project"或者选择File菜单中的"New Project"。我个人更喜欢后者,因为这样可以看到完整的工程创建向导。
工程命名时要注意使用有意义的英文名称,比如"led_flasher"或"pwm_controller"这样的名字。不要使用中文,也不要使用过于简单的名字如"test1",否则后期工程多了很容易混淆。
选择器件型号时,需要根据实际使用的开发板来配置。对于PGL22G芯片,在Family栏选择Logos,Device中选择PGL22G,Package选择BG324,Speed grade选择-6。这些参数一定要设置正确,否则后续的管脚分配和时序分析都会出问题。
工程类型选择RTL Project,因为我们准备用Verilog来编写代码。在添加设计文件时,可以先跳过,等工程创建完成后再添加源文件。同样的,约束文件和IP核也可以暂时不添加,后续根据需要再导入。
创建完成后,工程界面会显示在左侧的Navigator窗口中。这个时候工程还是个空壳,我们需要为它添加实质性的内容。
3. Verilog代码编写实战
现在来到最核心的代码编写环节。流水灯的逻辑其实很简单:通过计数器实现定时,然后在特定时间点改变LED的状态。但就是这个简单的逻辑,包含了FPGA设计的几个重要概念。
首先定义模块的输入输出端口。对于流水灯来说,我们需要一个系统时钟输入sys_clk,一个复位信号输入rst_n,以及4位宽的LED输出。注意复位信号是低电平有效,这是数字电路设计的常见做法。
module led_test( input sys_clk, // 50MHz系统时钟