赞
踩
本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(http://www.alinx.com)。
适用于板卡型号:
PGL22G/PGL12G
通过LED流水灯实验,介绍使用PDS软件开发FPGA的基本流程,器件选择、设置、代码编写、编译、分配管脚、下载、程序FLASH固化、擦除等;同时也检验板上LED灯是否正常。
3.1 LED硬件电路
开发板 LED部分原理图
从上面的LED部分原理图可以看出,开发板都是将IO经过一个电阻和LED串联接电源端,FPGA的IO输出低电平点亮LED。IO输出高电平LED灯熄灭,其中的串联电阻都是为了限制电流。
3.2程序设计
FPGA的设计中通常使用计数器来计时,对于50Mhz的系统时钟,一个时钟周期是20ns,那么表示一秒需要50000000个时钟周期,如果一个时钟周期计数器累加一次,那么计数器从0到49999999正好是50000000个周期,就是1秒的时钟。
程序中定义了一个32位的计数器:
- //Define the time counter
- reg[31:0] timer;
最大可以表示4294967295,十六进制就是FFFFFFFF,如果计数器到最大值,可以表示85.89934592秒。程序设计中是每隔1秒LED变化一次,一共消耗4秒做一个循环。
- always@(posedge sys_clk ornegedge rst_n)
- begin
- if(~rst_n)
- timer <=32'd0;
- elseif(timer ==32'd199_999_999)
- timer <=32'd0;
- else
- timer <= timer +1'b1;
- end
在第一秒、第二秒、第三秒、第四秒到来的时候分别改变LED的状态,其他时候都保持原来的值不变。
- // LED control
- always@(posedge sys_clk ornegedge rst_n)
- begin
- if(~rst_n)
- led <=4'b0000;
- elseif(timer ==32'd49_999_999)
- led <=4'b0001;
- elseif(timer ==32'd99_999_999)
- led <=4'b0010;
- elseif(timer ==32'd149_999_999)
- led <=4'b0100;
- elseif(timer ==32'd199_999_999)
- led <=4'b1000;
- end
4.1 创建工程
1)启动Pango Design Suite 2020.3开发环境(在开始菜单中选择pango->Pango Design Suite 2020.3>Pango Design Suite 。Pango Design Suite(简称PDS)或者双击桌面的Pango Design Suite 2020.3的图标直接打开软件。
2)在PDS 开发环境里双击Create Project或File->New Project...这两种方式都可,如下图:
3) 弹出一个PDS的工程向导,点击Next按钮。
4)在弹出的对话框中输入工程名和工程存放的目录,这里取一个led_test的工程名,点击Next;
5) 在下面的对话框中默认选择RTL Project, 因为我们这里使用verilog行为描述语言来编程,单击Next
6) 进入Add Design Source Files界面,这里先不添加任何设计文件。点击Next;
7)这里问是否添加已有的IP,保持默认不添加,单击Next;
8)提示是否添加已有的约束文件,这里约束文件我们也没有设计
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。