当前位置: 首页 > article >正文

FPGA开发流程

注:开发板:小梅哥的ACX720。本实验可直接运行在小梅哥的ACX720开发板上,后续的实验都可直接运行在小梅哥的ACX720上。

一、打开VIVADO并创建工程

        1、双击VIVADO图标,打开vivado。

        2、打开vivado界面打,点击Create Project(创建工程)

3、修改工程名已经修改存放的位置

4、选择第一个选项,并勾选复选框

 5、选择对应的芯片型号

二、新建源文件

1、点击“+”号,添加新的源文件,然后选择第二个 选项

2、点击“Create File”创建新文件,并给文件命名,后面点击finish和ok即可。

三、编写代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/11/18 20:18:38
// Design Name: 
// Module Name: led_flash
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module led_flash(
    input                               clk                        ,//系统时钟50M
    input                               rst_n                      ,//系统复位
    output reg                          led                         //led灯
);

    reg                [  31: 0]        cnt                        ;//定义一个计数器用来计数

    //cnt赋值
    always @ (posedge clk or negedge rst_n)
    if (!rst_n)
        cnt <= 32'd0;                                               //复位cnt为0
    else if (cnt == 32'd49_999_999)
        cnt <= 32'd0;                                               //记满清零 
    else
        cnt <= cnt + 1'd1;                                          //否则自加1

    //led赋值
    always @ (posedge clk or negedge rst_n)
    if (!rst_n)
        led <= 1'd0;                                                //复位led为0
    else if (cnt == 32'd49_999_999)                                 //1s反转led
        led <= ~led;


endmodule

四、代码仿真

 1、创建仿真源文件。点击“+”号,添加新的源文件,然后选择第三个 选项

2、点击“Create File”创建新文件,并给文件命名,后面点击finish和ok即可。

3、编写仿真代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/11/18 20:40:36
// Design Name: 
// Module Name: led_flash_tb
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module led_flash_tb();


    reg                                 clk                        ;//系统时钟50M
    reg                                 rst_n                      ;//系统复位
    wire                                led                        ;//led灯



led_flash led_flash_insh(
    .clk                                (clk                       ),
    .rst_n                              (rst_n                     ),
    .led                                (led                       ) 
);

    initial clk = 1;                                                //初始化clk为1
    always #10 clk = ~clk;                                          //总是10ns clk翻转

    initial begin
        rst_n = 0;                                                  //复位
        #21;                                                        //延迟21ns
        rst_n = 1;                                                  //释放复位
        #2000000000;                                                //延迟2S
        $stop;                                                      //停止仿真
    end


endmodule

5、开始仿真。点击run simulation  , run behaavioral simulattion。不过要注意,一定要将仿真文件设置为顶层

如果没有设置顶层,一定要选中文件右击,然后点击set as top。也就是下图1的位置,设置完成后,在2的位会有一个”品“字的符号。

设置完成后开始仿真。

五、仿真结果

1、增加cnt信号。选中scope,点击led_ffflash_inst,选中cnt,右击,选择add to wave window,然后重新运行仿真,最后点击run all。

2、仿真完成

3、放大led第一次翻转的细节

4、修改cnt的显示进制,修改成无符号数

5、计数器记到49999999进行翻转,符合预期。

6、第二次翻转也是符合预期

六、分析和综合并分配引脚

1、点击run synthesis,进行分析综合。

2、分析完成后,在弹出的对话框中选择第二个选项,并点击Ok。

3、选择io planning

4、进行引脚分配,并且电平改成3.3v.修改完成后,ctrl + s 保存即可。注意,这个引脚只是针对ACX720开发板,如使用其他的开发板,请自行查找管脚进行分配

七、生成bit流 

1、点击Generate Bitstream ,然后点击yes,紧接着点击OK即可。

2、bit流生成完成后,选择第三个选项,然后点击OK。

3、将下载器件与开发板相连,并给开发板上电。

4、点击open target下的Auto Connect 连接设备

5、连接上则会出现芯片型号。在 Hardware Manager 界面中找到并右键单击 xc7a35t_00),在浮动菜单中单击 Program Device…选项。

6、然后选择bit文件后,点击 Program

八、实验现象

        可以看到在ACX720开发板上的LED0每隔1s翻转一下。


http://www.kler.cn/a/399916.html

相关文章:

  • 两大新兴开发语言大比拼:Move PK Rust
  • MATLAB向量元素的引用
  • 【Pytorch】IPython库中的display函数
  • 【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1
  • Spring Boot教程之Spring Boot简介
  • 基于Java Springboot编程语言在线学习平台
  • 企业组网面临的安全挑战及SD-WAN解决方案
  • [产品管理-89]:《产品思维30讲》的主要内容与核心思想,产品的本质是利用各种工具和思维模式,为用户和社会创造真正解决问题和满足需求的价值
  • OLED透明屏在零售行业有哪些优势
  • 【vba源码】导入excel批注信息
  • IDEA 2024.3正式版发布,速览新功能!
  • 51c自动驾驶~合集27
  • 华为刷题笔记--题目索引
  • MySQL查询执行(七):临时表
  • 掌握docker部署Spring boot项目演示
  • 强制放大缩小(适用于所有ctrl-,ctrl+)
  • Java 核心技术卷 I 学习记录八
  • 前后端请求响应
  • 「Mac玩转仓颉内测版20」PTA刷题篇11 - L1-011 A-B
  • gitlab 服务器集群配置及 存储扩展配置
  • MTK主板定制_联发科主板_MTK8766/MTK8768/MTK8788安卓主板方案
  • elementUI select,option变化,如果option不存在上次的选项,自动清空上次的选择
  • 中伟视界:AI智能分析算法如何针对非煤矿山的特定需求,提供定制化的安全生产解决方案
  • .NET桌面应用架构Demo与实战|WPF+MVVM+EFCore+IOC+DI+Code First+AutoMapper
  • es6和es5的区别
  • 【星海随笔】分布式管理Zookeeper