zynq 7010 PL 点灯例程
Posted Li-Yongjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zynq 7010 PL 点灯例程相关的知识,希望对你有一定的参考价值。
环境
硬件:ebaz4205
软件:Vivado 2018.3
下载器:XILINX JTAG 下载器
硬件改造
由于 ebaz4205 矿板没有焊接 PL 晶振,需要手工焊接,共需焊接下面三处才能让 PL 晶振工作,
- 背面 L29 焊接一个 0603 的 0 欧姆电阻
- X5 焊接一个 3225 的 50MHz 的有源晶振
- 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 PL 点灯例程的主要内容,如果未能解决你的问题,请参考以下文章
zynq7010 在 linux 系统下 irq_f2p 中断驱动
zynq7020开发记录(持续更新)--SPI编译配置和使用
zynq7020开发记录(持续更新)--SPI编译配置和使用