FPGA学习之点亮LED——正点原子ZYNQ学习笔记2

众所周知,软件语言的第一步是HelloWorld,而硬件的第一步就是点燃 引爆 点亮一颗LED灯。而想要点灯,就需要了解FPGA的开发流程。

FPGA开发流程

在硬件设计过程中,必须要明确自己的目标,细化要求,多沟通,这样才能实现想要的目标。第二步,要对整个目标进行划分,一点一点完成。然后就是对硬件的选型。接下来就是对具体功能的实现。第一步要对整个逻辑进行抽象,从具体的需求转化为数字信号的变化,绘制波形图就相当于是真值表或者状态机,最后就可以编写RTL代码了。为了验证代码,先要使用Modelsim进行仿真,然后就可以导入Vivado里,通过vivado生成电路图。实现电路后还要把电路的硬件绑定到引脚上。最后就可以调试了。

项目管理

一个好的团队就必须有纪律,一个好的项目也必须有组织。只有对项目文件合理管理,才能在开发时更有条理。

比如一个项目可以有四个子文件夹,分别存放项目、程序、仿真文件和数据手册。

实际操作

前置知识

原理图

教程中要实现一个把按键同步到LED的功能,这个功能非常简单(就是一个非门),所以前面的需求分析可以跳过,而我们手里也没有其他的FPGA。电路板也不是自己设计,所以需要了解开发板的原理图。如下

当按下时,导通,信号被下拉到地,所以当按下时是0,松开为1。LED的原理图就不放了,就是高电平点亮,加上限流电阻。

取反

取反分为两种,分别是按位取反~和逻辑取反!,在单比特情况下无差别,多位取反有如下差别

符号

名称

功能描述

~

按位取反

将每一位取反,如~(4'b1011) = 4'b0100

!

逻辑取反

如果不全为零则视为一,把最低位设为取反值。如!(4'b1011) = 4'b0000, !(2'b00) = 2'b01

项目实践

创建文件夹

这样整四个文件夹,接下来绘制系统框图。

需求梳理&逻辑抽象

先用Visio梳理一下输入和输出。这个模块比较简单,故不过多介绍

根据前面的原理图和系统框图,可以绘制出如下的功能示意图,可以看出他们之前是取反的关系

根据这种关系,可以获得如下的波形。

代码编写

接下来就可以开始编写RTL代码了(这部分由于没有正是学习,简单了解即可)

最主要的是第五行,将输入取反后给到输出。

module LED (
	input Key,      // Input of the module, default high
	output LED      // Output of the module, light up when it's high
);
	assign LED = ~Key;  // Set the output to nevagation of the input
endmodule

仿真测试

接下来就需要对其进行仿真,仿真需要编写仿真模块,它能够扫描所有的输入,并且检测输出是否符合与其波形。

`timescale 1ns/1ns  // set the unit and accuracy by `timescale unit/accuracy
module TB_LED ();
    reg key;
    wire LED;
    initial begin   //run at the intitialize
    // make an alternate changing signal
        key <= 1'b1;
        #200
        key <= 1'b0;
        #500
        key <= 1'b1;
        #1000
        key <= 1'b0;
        #1000
        key <= 1'b1;
    end
// connnect the test signal to the module
LED u_led(
    .Key    (key), 
    .LED    (LED)
);
endmodule

因为这次是走一遍流程,所以程序的具体内容不需要掌握。

打开ModelSim,新建工程File-New-Project。名称TB_LED(和测试文件一致)路径为sim目录。

接下来,添加tb_led和led文件。然后编译,如果没有问题后开始仿真

在上面的界面中选择Testbench模块

还有优化选项里要开启全部信号模式。把待测信号添加到波形

在上图这个界面中点击Run All,得到如下波形,可以看到波形,符合预期

Vivado工程

在Vivado中新建工程,并命名为LED,取消创建子目录选项,并把路径设置在prj目录。在添加源文件的界面中添加led.v,器件型号7020:XC7Z020CLG400-2

来到下面这个界面

点击,就可以综合出电路,但此时的电路是无法和芯片的引脚对应的,所以要添加引脚约束

通过查阅原理图,查得LED的引脚为H15, 按键为L14,它们都连接在Bank35上,使用3.3V供电。具体查找过程参考视频。下面就可以进行综合了

点击左侧绿色三角,等待一个世纪,然后打开原理图

其中IBUF和OBUF是固有的(个人猜测是输出高质量01的),而非门是使用LUT实现的。

然后Run Implementation,接着Generate Bitstream。

烧录验证

将拨码开关都拨到on,链接下载器,上电,OpenTarget,自动连接后,点击ProgramDevice就可以进行烧录,由于ZYNQ PL部分没有Flash,所以掉电后无法保持。

总结

通过本节课学习,了解FPGA的开发流程,熟悉各种软件的使用,本课中的代码暂时不必完全掌握。

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值