黑金AX7020 && ZYNQ7000 (一) PL流水灯设计
来源:互联网 发布:阿里云计算是什么 编辑:程序博客网 时间:2024/05/02 10:12
硬件平台:黑金AX7020
开发环境:widows7 旗舰版 x64
开发软件:vivado 2015.4
一,建立工程
打开vivado,点击create new project,如下图1所示,选择工程路径,填写文件名,接着选next
图1 建立工程
选择工程类型,为RTL Project,如下图2所示
图2 选择工程类型
选择器件,Zynq-7000 clg400-2 c,如下图3所示
图3 选择器件图
确认自己的选择没有错误,点击Finish,如图4所示
图4 建立工程完成图
二,添加工程源文件
选中Design Sources 点击Add Sources,在弹出的界面中选择Add or create design sources选项,如下图5所示
图5 添加源文件图
如图6和图7所示,点击Create File按钮,再弹出的对话框里选择File type是verilog, File name为led.v,点击OK按钮
点击ok,会出现下图所示
这个时候会提示您定义I/O的端口,这里我们不定义,后面在程序中编写,下图直接选择OK
这时在Project Manager界面下的Design Sources里已经有一个led.v文件,并且自动成为项目的Top模块
三,编写源文件
编写led.v文件,我们定义一个32位的寄存器timer,用于循环计数,计数达到9000000的时候,寄存器timer变为0,内容如下
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2016/09/28 15:04:30// Design Name: // Module Name: led// Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision:// Revision 0.01 - File Created// Additional Comments:// //////////////////////////////////////////////////////////////////////////////////module led( input sys_clk, input sys_rst_n, output reg [3:0] led );reg[31:0] timer_cnt;always@(posedge sys_clk or negedge sys_rst_n)begin if(sys_rst_n==1'b0) begin led <= 4'b1000; timer_cnt <= 32'b0; end else begin if(timer_cnt == 32'd9000000) begin timer_cnt <= 32'b0; led<= (led>>1)|(led<<3); end else begin timer_cnt <= timer_cnt + 32'b1; end endendendmodule设定sys_rst_n为复位,sys_clk为系统时钟,为了实现下降沿复位,sys_rst_n==1'b0则可以实现下降沿复位
小灯的移位采用“左移1位+右移N-1”模式,如下所示:
led<= (led>>1)|(led<<3);
四,添加工程约束文件
如图所示进行添加,
编写led.xdc文件,添加如下约束管脚定义
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]set_property IOSTANDARD LVCMOS33 [get_ports sys_rst_n]set_property PACKAGE_PIN J16 [get_ports {led[3]}]set_property PACKAGE_PIN K16 [get_ports {led[2]}]set_property PACKAGE_PIN M15 [get_ports {led[1]}]set_property PACKAGE_PIN M14 [get_ports {led[0]}]set_property PACKAGE_PIN U18 [get_ports sys_clk]set_property PACKAGE_PIN L15 [get_ports sys_rst_n]
这里使用了最基本的XDC编写的语法,普通IO口只需要约束引脚号和电压,管脚约束如下:
set_property PACKAGE_PIN "引脚编号" [get_ports "端口名称"]
电平信号的约束如下:
set_property IOSTANDARD "电压" [get_ports "端口名称"]
五,编译
点击Run Systhesis,即可开始综合并生成网表文件,然后点击Run Implementation来开始布局布线,布线完成后在一个提示小窗口中,选择点击Generate Bitstream即可生成bit文件
六,下载和调试
连接实验板的JPAG接口,进行下载,会出现LED的流水灯点亮了。
- 黑金AX7020 && ZYNQ7000 (一) PL流水灯设计
- Xilinx ZYNQ 7000+Vivado2015.2系列(一)之流水灯(纯PL)
- Zedboard学习(三):PL下流水灯实验
- 嵌入式软硬件协同设计阶段性总结(Zynq7000系列)
- 流水灯并行设计
- 串行流水灯设计
- NRF51822自学笔记(一) 流水灯
- zigbee基础应用(一)流水灯
- 并行流水灯设计方法
- 有限状态机设计 之 流水灯
- 实验一:流水灯实验
- linux 流水日记(一)
- 基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结(一)
- 单片机AT89c51——流水灯设计
- 并行口设计花样流水灯实验
- STM32实验一:GPIO之流水灯
- 每隔一秒闪烁的流水灯
- 数码管逐次加一同时流水灯
- 简述Servlet的生命周期
- 接口的特性
- XML入门
- kettle中"数据库查询"与"数据库连接"步骤的区别
- QT All Modules QT所有模块
- 黑金AX7020 && ZYNQ7000 (一) PL流水灯设计
- Windows编程_Lesson001_Windows 简介
- Android命名规范
- nyoj-06
- 最小生成树的Prim算法实现
- tensorflow初试
- 数据库/Java关键字<2>
- String int 转换方法
- 程序