Zedboard---实验一点亮一盏LED

    xiaoxiao2021-04-16  39

    Zedboard实验一点亮一盏LED

    标签: Zedboard

    目的

    熟悉Vivado开发环境熟悉ZYNQ开发流程

    创建Vivado工程

    开发环境:Vivado2015.4

    1. 新建工程

    主菜单选择File->New Project后,弹出的窗口点击next,出现下图:选择工程目录,编辑工程名这里命名为Tutorial1。 弹出窗口,选择RTL Project 接下来一路next,直到如下图窗口:选中Zedboard板子。点击Finish,完成工程创建。

    2. 添加源文件

    在Project Manager窗口空白处用鼠标右键,选择Add Sources弹出下图窗口,选择所需创建的源文件。 下图为弹出的的窗口中选择Create File 点击Create File后,编辑文件类型和文件名,这里文件类型选择默认Verilog文件,文件名为top。 添加约束文件同理如上。

    Verilog

    创建Vivado工程,添加Verilog文件。工程设计为一位输入作为开关和一个输出作为LED显示。

    编辑Verilog文件如下:

    module top( input switch, output led ); assign led = switch; endmodule

    将该模块命名为top

    约束

    只有.v文件是不够的,编译器在不能运行Verilog代码,还需要约束信息。确定那个管脚是输出的led,哪个管脚是输入switch。 创建XDC文件,命名为.xdc。根据Zedboard原理图分配管脚。Zedboard上由8个LED和8个开关。

    输入: Switch 0对应原理图上的网络标号”SW0”,与FPGA F22管脚相连。该管脚属于bank35,电压为VADJ(通过跳帽选择2.5V或1.8V)。假设跳帽将VADJ与2.5V短接,就意味着2.5V电平输入。输出: LED 0对应原理图上网络标号”LD0”,与FPGA管脚T22相连。该管脚属于bank33 供电电压3.3V

    编辑.xdc文件

    set_property IOSTANDARD LVCMOS33 [get_ports led] set_property IOSTANDARD LVCMOS25 [get_ports switch] set_property PACKAGE_PIN T22 [get_ports led] set_property PACKAGE_PIN F22 [get_ports switch]

    现在编译工程,生成比特流文件,给板子编程。 在Vivado界面右侧Flow Navigator -> Program and Debug -> Hardware Manager 点击Open Taget检测到硬件xc7z020,在Hardware窗口下点击Program device


    添加更多的输入输出

    修改原有的.v文件,将源文件的输入输出修改为八位宽的总线:

    module top ( input [7:0] switch, output [7:0] led ); assign led = switch; endmodule

    参照原理图,添加约束:

    set_property IOSTANDARD LVCMOS33 [get_ports led] set_property IOSTANDARD LVCMOS25 [get_ports switch] set_property PACKAGE_PIN T22 [get_ports {led[0]}] set_property PACKAGE_PIN T21 [get_ports {led[1]}] set_property PACKAGE_PIN U22 [get_ports {led[2]}] set_property PACKAGE_PIN U21 [get_ports {led[3]}] set_property PACKAGE_PIN V22 [get_ports {led[4]}] set_property PACKAGE_PIN W22 [get_ports {led[5]}] set_property PACKAGE_PIN U19 [get_ports {led[6]}] set_property PACKAGE_PIN U14 [get_ports {led[7]}] set_property PACKAGE_PIN F22 [get_ports {switch[0]}] set_property PACKAGE_PIN G22 [get_ports {switch[1]}] set_property PACKAGE_PIN H22 [get_ports {switch[2]}] set_property PACKAGE_PIN F21 [get_ports {switch[3]}] set_property PACKAGE_PIN H19 [get_ports {switch[4]}] set_property PACKAGE_PIN H18 [get_ports {switch[5]}] set_property PACKAGE_PIN H17 [get_ports {switch[6]}] set_property PACKAGE_PIN M15 [get_ports {switch[7]}]

    添加一个时钟

    时钟对于FPGA设计很重要,可以使FPGA随着时间改变不同的状态。使Verilog代码的编写有了更多的变化。 这里要注意的是,添加输出声明关键字reg。在Verilog2005中有两种网络类型:1. wire 网线型;2. reg 寄存器型。

    module top ( input clk, input [7:0] switch, output reg [7:0] led ); always @(posedge clk) led = switch; endmodule

    添加约束

    高速编译器,那个管脚连接时钟。

    set_property IOSTANDARD LVCMOS33 [get_ports clk] set_property PACKAGE_PIN Y9 [get_ports clk] create_clock -period 10 [get_ports clk]

    本实验中,添加时钟和未添加时钟的效果一样的。未添加时钟的工程,相当于输出时刻等于输入;添加时钟的工程,相当于只有当时钟上升沿到达时,刷新输出等于输入。


    详细参考英文原文

    转载请注明原文地址: https://ju.6miu.com/read-672373.html

    最新回复(0)