zynq 7010 PL 点灯例程

环境

硬件:ebaz4205
软件:Vivado 2018.3
下载器:XILINX JTAG 下载器

硬件改造

由于 ebaz4205 矿板没有焊接 PL 晶振,需要手工焊接,共需焊接下面三处才能让 PL 晶振工作,

  1. 背面 L29 焊接一个 0603 的 0 欧姆电阻
  2. X5 焊接一个 3225 的 50MHz 的有源晶振
  3. R1372 焊接一个 0402 的 10 欧姆的电阻
    在这里插入图片描述
    在这里插入图片描述

代码

编写 Verilog 代码,创建一个 module。

Verilog 中的 module 相当于 VHDL 中的 entity + architecture。

在 module 中定义模块的输入输出信号,并描述内部行为:时钟上升沿,计数加一,累计到 50M 时 led 取反。
后面会给 clk 绑定外部晶振引脚,外部晶振频率为 50MHz,所以 led 每秒状态会变化一次。
led.v

module led(
  input clk,        // 输入时钟信号
  output reg led    // 输出 LED 信号
);

reg [31:0] counter = 0;         // 定义一个 32 位计数器变量

always @(posedge clk) begin     // 该 always 块会在时钟上升沿触发时执行。positive edge: 上升沿;negative edge:下降沿。
  counter <= counter + 1;       // 计数器加 1
  if (counter == 50000000) begin // 如果计数器达到一个固定的值
    counter <= 0;               // 计数器清零
    led <= ~led;                // LED 取反
  end
end
endmodule

分配引脚

将 module 视为 PCB 上的 IC 芯片,我们还要为其连接外部引脚,才能完成输入输出功能。
在 Vivado 中,分配引脚有两种方式,一种是用图形界面,另一种是写约束文件。这两种方式结果相同,最终都是生成相同的约束文件。
为了简单直观起见,我们使用图形界面,操作步骤如下图。
在这里插入图片描述
其中,板子上晶振的输入引脚是 N18,我们便将 clk 与 N18 引脚相连。
输出引脚我们随便选一个 H18(DATA1-15),并设置引脚的电气属性为 3.3V,后面将该引脚连接一个 LED 观看效果。
在这里插入图片描述 在这里插入图片描述

综合(Synthesis)

点击 Run Synthesis 进行综合。
综合(synthesis)的概念是:将高级抽象层次的电路描述转化成较低层次的描述。
也就是说将语言描述的电路逻辑转化成与门、或门、非门、触发器等基本逻辑单元的互连关系。也就是我们常说的门级网表。
简单来说就是:Verilog =综合=> 电路原理图
在这里插入图片描述

实现(Implementation)

点击 Run Implementation 进行实现。
implementation 正确的翻译应该是“实现”,implementation 是一个 place 和 route 的过程,也就是布局布线
综合后生成的门级网表只是表示了门与门之间虚拟的连接关系,并没有规定每个门的位置以及连线的长度等。布局布线就是一个将门级网表中的门的位置以及连线信息确定下来的过程。
可以理解为是 PCB 布局布线的过程。
在这里插入图片描述

生成 Bitstream(Generate Bitstream)

点击 Generate Bitstream。
通过 Generate Bitstream 命令,可以将设计文件转换为可下载到 FPGA 芯片中的 Bitstream 文件
这个 Bitstream 文件包含了 FPGA 芯片的配置信息,包括了实现的逻辑电路、时序等信息,可以被烧录到 FPGA 芯片中,从而使 FPGA 芯片运行用户设计的逻辑电路。
通过生成 Bitstream 文件,可以将 FPGA 设计从软件模拟阶段转换到硬件实现阶段,并将设计部署到目标 FPGA 芯片中。

Auto Connect && Program Device

依次点击 Open Hardware Manager、Auto Connect、Program Device,将 Bitstream 文件烧写到 zynq 中。
具体来说是烧写到 zynq PL(FPGA) 的配置寄存器中。FPGA 中的配置寄存器是用来配置 PL 中逻辑单元的寄存器,它们可以配置逻辑单元的功能、输入输出端口以及与其他逻辑单元之间的互联关系。通过将 Bitstream 文件写入配置寄存器,FPGA 中的逻辑单元就会按照文件中的配置进行初始化,从而实现所需的功能。

测试

请添加图片描述

Zynq 7010是Xilinx公司推出的一款可编程逻辑器件,它结合了ARM Cortex-A9处理器和FPGA技术,具有很高的可扩展性和灵活性。在使用Zynq 7010开发板进行USB开发时,可以选择使用Xilinx提供的USB例程来实现USB功能。 USB例程是一种预先编写好的代码,可用于快速实现特定功能,降低开发者的开发难度。对于Zynq 7010 USB例程,它可以用于实现USB通信和数据传输。 首先,需要进行板级支持包(BSP)的创建,该BSP包含了针对特定开发板的底层驱动程序和硬件描述符,以便能够正常操作USB接口。接下来,在开发环境中创建一个新的工程,导入USB例程代码,例如使用Xilinx提供的SDK开发工具。 其中,USB例程提供了一系列的API函数,用于初始化USB接口、配置设备和端点、处理中断等操作。通过对这些API函数的调用和配置,可以实现 USB设备的功能,在主机和设备之间进行数据通信。 在进行USB例程开发时,需根据具体的应用需求做出相应的修改和配置。可以根据所需的传输速率、传输方式、传输类型等进行相应的设置,以满足实际的应用需求。 总的来说,使用Zynq 7010 USB例程可以快速实现USB功能,不需要从头开始编写代码。通过合理配置和调用API函数,可以轻松实现 USB设备的功能,使其可以与主机进行通信和数据交换。这样的例程可以极大地节省开发时间和精力,并提高开发效率。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li-Yongjun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值