zynq系列FPGA分为PS部分和PL部分。

PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分。

PS: 处理系统 (Processing System) , 就是与FPGA无关的ARM的SOC的部分,实质是直接操作arm9内核的处理器。

这次先是最简单地在PL部分编写一个流水灯实验的代码。

使用的开发环境是vivado 2016.4。

1、新建工程,Create New Project。

2、next。

3、选择工程目录,和输入工程名字。

4、选择RTL Project。

5、还没有编写Verilog代码,跳过这一步,直接next。

6、不选择IP核,直接跳过,点next。

7、选择boards,软件自带了zedboard的芯片型号等的配置,选择zedboard即可。

8、工程信息,点next完成工程的创建。

9、vivado整个工程的界面。

10、点add sources。

11、选择如图选项,添加源文件。

12、点create file,输入新建的Verilog文件的名称:led.v,然后选OK。



接下来有了led.v文件,可以开始编写Verilog代码了。

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer: xu_hongbin
//
// Create Date: 2017/07/05 09:57:09
// Design Name:
// Module Name: led
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////// module led(
Clk,
Rst,
Led
); input Clk; //时钟
input Rst; //zedboard上是高电平复位
output [7:0] Led; //led输出口 reg [31:0] delay_cnt; //分频延时计数器
reg clk_500ms; //分频后的2HZ信号
reg [7:0] Led_r; //LED信号输出寄存器 always @(posedge Clk or posedge Rst)
begin
if(Rst)
begin
delay_cnt <= 32'd0;
clk_500ms <= 1'd0;
end
else if(delay_cnt == 32'd25_000_000 - 32'd1)
begin
delay_cnt <= 32'd0;
clk_500ms <= ~clk_500ms;
end
else
begin
delay_cnt <= delay_cnt + 1'b1;
end
end always @(posedge clk_500ms or posedge Rst)
begin
if(Rst)
Led_r <= 8'd1;
else
Led_r <= (Led_r << 1) | (Led_r >> 7);
end assign Led = Led_r; endmodule

代码很简单不多介绍了。

13、接下来准备编写约束文件,分配引脚。在constraints下的constrs_1上右击,在弹出的菜单中选择Add Sources。

14、选择Add or create constraints。

15、跟前面创建Led.v文件时一样,先点create file,创建一个约束文件,名字随便取,约束文件后缀是.xdc。



我的约束文件pins.xdc,引脚分配可以从官方给的原理图中找到:

# Led0
set_property PACKAGE_PIN T22 [get_ports {Led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[0]}] # Led1
set_property PACKAGE_PIN T21 [get_ports {Led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[1]}] # Led2
set_property PACKAGE_PIN U22 [get_ports {Led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[2]}] # Led3
set_property PACKAGE_PIN U21 [get_ports {Led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[3]}] # Led4
set_property PACKAGE_PIN V22 [get_ports {Led[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[4]}] # Led5
set_property PACKAGE_PIN W22 [get_ports {Led[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[5]}] # Led6
set_property PACKAGE_PIN U19 [get_ports {Led[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[6]}] # Led7
set_property PACKAGE_PIN U14 [get_ports {Led[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {Led[7]}] # Clk(板子上的GCLK)
set_property PACKAGE_PIN Y9 [get_ports {Clk}]
set_property IOSTANDARD LVCMOS33 [get_ports {Clk}] # Rst(板子上的BTNU)
set_property PACKAGE_PIN T18 [get_ports {Rst}]
set_property IOSTANDARD LVCMOS33 [get_ports {Rst}]

16、代码都写完了,剩下的就是分析综合了。



分析综合的流程是:Run Synthesis–>Run Implementation–>Generate Bitstream。

Synthesis:对工程进行分析,检查是否有语法错误,生成RTL级的原理图;

Implementation:对工程进行综合,会在底层布局布线。

Bitstream:比特流文件,是最后可以下载到FPGA中运行的文件。

我们也可以一步到位,直接点Generate Bitstream,vivado会自动执行上述过程。

17、产生比特流完毕后,给板子上电,然后点击Open Hardware Manager–>Open Target–>Auto Connect。随后会弹出HardWare Manager的窗口。



如果识别到了zedboard,会显示上面的信息。

arm_dap_0表示zynq内的arm9内核;

xc7z020_1表示FPGA处理器。

点击program device,选择xc7z020_1。

选择前面生成的比特流文件,一般自动选好了。



program就行了,最后会看到板子上开始运行流水灯。

Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)的更多相关文章

  1. Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏

    xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...

  2. UI基础:UI程序执行顺序(UIApplicationMain()函数),自定义视图 分类: iOS学习-UI 2015-07-02 22:09 68人阅读 评论(0) 收藏

    UI程序的一般执行顺序: 先进入main里面,执行函数UIApplicationMain(),通过该函数创建应用程序对象和指定其代理并实现监听,当执行函数UIApplicationMain()时还会做 ...

  3. Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 分类: oracle sde 2015-06-12 11:03 88人阅读 评论(0) 收藏

    Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 Oracle 12C中引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant ...

  4. 数字图像处理实验(总计23个)汇总 标签: 图像处理MATLAB 2017-05-31 10:30 175人阅读 评论(0)

    以下这些实验中的代码全部是我自己编写调试通过的,到此,最后进行一下汇总. 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Half ...

  5. NYOJ 119 士兵杀敌(三)【ST算法】 分类: Brush Mode 2014-11-13 20:56 101人阅读 评论(0) 收藏

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=119 解题思路: RMQ算法. 不会的可以去看看我总结的RMQ算法. http://blo ...

  6. NYOJ-21 三个水杯 AC 分类: NYOJ 2014-02-08 11:35 174人阅读 评论(0) 收藏

    人生中第一个AC的广搜题目,喵呜,C++的STL果真不错, #include<stdio.h> #include<queue> #include<string.h> ...

  7. linux中echo的用法 分类: 学习笔记 linux ubuntu 2015-07-14 14:27 21人阅读 评论(0) 收藏

    1.echo命令我们常用的选项有两个,一个是-n,表示输出之后不换行,另外一个是-e,表示对于转义字符按相应的方式处理,如果不加-e那么对于转义字符会按普通字符处理. 2.echo输出时的转义字符 \ ...

  8. Lucene学习总结之四:Lucene索引过程分析 2014-06-25 14:18 884人阅读 评论(0) 收藏

    对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后 ...

  9. 学习金字塔 分类: T_TALENT 2014-05-21 09:25 331人阅读 评论(0) 收藏

    学习金字塔是美国缅因州的国家训练实验室研究成果,它用数字形式形象显示了:采用不同的学习方式,学习者在两周以后还能记住内容(平均学习保持率)的多少.它是一种现代学习方式的理论.最早它是由美国学者.著名的 ...

随机推荐

  1. 给DB2增加删除字段二三事

    加字段用这个,CS.TG表名,LINE2_TYPE字段名,CHAR(1)字段类型 ALTER TABLE CS.TG ADD COLUMN LINE2_TYPE CHAR(1); 要是加错了用以下语句 ...

  2. Django模板输出Dict所有Value的效率问题

    一次跑偏之旅!   对于一个惯用C++的人来说,使用Python这种语言的一大障碍就是许多集合类型的操作效率并不如传统的经典数据结构那样直观可见,以及许多实际上涉及到内存分配.对象复制之类的耗时操作被 ...

  3. linux下 tomcat 日志乱码/中文链接404

    1 日志乱码: JDK引用的设置 Java引用参数添加”-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8” 将上面参数添加到Catalina.sh中JAVA ...

  4. appium历史版本下载地址

    https://github.com/appium/appium-desktop/releases

  5. php网站环境无法上传的解决办法?

    一. 检查网站目录的权限.二. php.ini配置文件php.ini中影响上传的有以下几处:file_uploads 是否开启 on 必须开启是否允许HTTP文件上传post_max_size = 8 ...

  6. 嵌入式Linux驱动和固件有何区别?供应商是如何用固件压缩成本的?

    作为一个驱动开发者, 你可能发现你面对一个设备必须在它能支持工作前下载固件到它里面. 硬件市场的许多地方的竞争是如此得强烈, 以至于甚至一点用作设备控制固件的 EEPROM 的成本制造商都不愿意花费. ...

  7. apk比较版本大小

    Java String.compareTo(), 此方法如果这个字符串是等参数字符串那么​返回值0,如果这个字符串是按字典顺序小于字符串参数那么返回小于0的值, 如果此字符串是按字典顺序大于字符串参数 ...

  8. 1.docker学习之简介

    什么是Docker Docker是一个开源的应用容器引擎.通俗来说:所谓开源,就是指Docker是开放源代码的,比如用户可以免费使用该源代码, 并在该源代码的基础上自由修改或传播.所谓引擎,指的是程序 ...

  9. 第五章 服务容错保护: Spring Cloud Hystrix

    在微服务架构中, 存在着那么多的服务单元, 若一个单元出现故障, 就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定.为了解决这样的问题, 产生了断路器等一系 ...

  10. Oracle 创建表空间借鉴 保留,占版权留言告知

    /*分为四步 */ /*第1步:创建临时表空间 */ create temporarytablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i ...