当前位置:   article > 正文

【紫光同创国产FPGA教程】【第二章】LED流水灯实验及仿真_紫光同创pango的独立仿真

紫光同创pango的独立仿真

原创声明:

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(http://www.alinx.com)。

适用于板卡型号:

PGL22G/PGL12G

1. 实验简介

通过LED流水灯实验,介绍使用PDS软件开发FPGA的基本流程,器件选择、设置、代码编写、编译、分配管脚、下载、程序FLASH固化、擦除等;同时也检验板上LED灯是否正常。

2. 实验环境

  • Windows 10 64位
  • Pango Design Suite 2020.3

3. 实验原理

3.1 LED硬件电路

开发板 LED部分原理图

从上面的LED部分原理图可以看出,开发板都是将IO经过一个电阻和LED串联接电源端,FPGA的IO输出低电平点亮LED。IO输出高电平LED灯熄灭,其中的串联电阻都是为了限制电流。

3.2程序设计

FPGA的设计中通常使用计数器来计时,对于50Mhz的系统时钟,一个时钟周期是20ns,那么表示一秒需要50000000个时钟周期,如果一个时钟周期计数器累加一次,那么计数器从0到49999999正好是50000000个周期,就是1秒的时钟。

程序中定义了一个32位的计数器:

  1. //Define the time counter
  2. reg[31:0] timer;

最大可以表示4294967295,十六进制就是FFFFFFFF,如果计数器到最大值,可以表示85.89934592秒。程序设计中是每隔1秒LED变化一次,一共消耗4秒做一个循环。

  1. always@(posedge sys_clk ornegedge rst_n)
  2. begin
  3. if(~rst_n)
  4. timer <=32'd0;
  5. elseif(timer ==32'd199_999_999)
  6. timer <=32'd0;
  7. else
  8. timer <= timer +1'b1;
  9. end

在第一秒、第二秒、第三秒、第四秒到来的时候分别改变LED的状态,其他时候都保持原来的值不变。

  1. // LED control
  2. always@(posedge sys_clk ornegedge rst_n)
  3. begin
  4. if(~rst_n)
  5. led <=4'b0000;
  6. elseif(timer ==32'd49_999_999)
  7. led <=4'b0001;
  8. elseif(timer ==32'd99_999_999)
  9. led <=4'b0010;
  10. elseif(timer ==32'd149_999_999)
  11. led <=4'b0100;
  12. elseif(timer ==32'd199_999_999)
  13. led <=4'b1000;
  14. end

4. PDS工程

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)提示是否添加已有的约束文件,这里约束文件我们也没有设计

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/539109
推荐阅读
相关标签
  

闽ICP备14008679号