Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)
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学习(四):PS+PL搭建SoC最小系统 标签: fpgazedboardxilinxsoczynq 2017-07-07 15:58 7人阅读
- Zedboard学习(三):PL下流水灯实验
- 数字图像处理实验(总计23个)汇总 标签: 图像处理MATLAB 2017-05-31 10:30 175人阅读 评论(0)
- Zedboard学习(二):zedboard的Linux下交叉编译环境搭建 标签: 交叉编译linuxzedboard 2017-07-04 23:49 19人阅读
- 学习Android的Camera 2015-06-12 21:15 21人阅读 评论(0) 收藏
- Zedboard学习(一):移植Ubuntu桌面操作系统 标签: ubuntu移植zedboardFPGA 2017-07-04 21:53 26人阅读
- Linux下高并发socket最大连接数所受的各种限制 标签: linuxsockettcplinux内核网络通讯 2011-07-19 08:10 95938人阅读 评论(21) 收藏 举报 版
- NIOS II 学习第一天:LED流水灯实验中诸多困惑的解决方法
- Arm寄存器 分类: 嵌入式开发学习 2011-04-11 23:34 511人阅读 评论(0) 收藏
- arm-linux-gcc安装 和 环境变量设置 分类: 嵌入式开发学习 2011-04-13 11:34 10197人阅读 评论(1) 收藏
- C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习(一) 分类: C# 2012-11-01 22:12 620人阅读 评论(0) 收藏
- configure 时的host build target问题 分类: 嵌入式开发学习 2011-07-20 22:46 3875人阅读 评论(0) 收藏
- linux下的多线程调试(gdb) 分类: 嵌入式开发学习 2011-07-21 22:37 3337人阅读 评论(0) 收藏
- linux环境搭建和arm开发板环境搭建 续 分类: 嵌入式开发学习 2011-03-22 22:58 2558人阅读 评论(3) 收藏
- 【ASP.NET开发】ASP.NET(MVC)三层架构知识的学习总结 分类: ASP.NET 2012-09-27 17:09 1985人阅读 评论(1) 收藏
- Android Animation学习笔记 Posted on 2010-01-11 23:00 feisky 阅读(40227) 评论(12) 编辑 收藏 关于动画的实现,Android提供了A
- 编译程序和操作系统 分类: 嵌入式开发学习 2011-08-24 10:46 1043人阅读 评论(0) 收藏
- 关于 arm的中断系统 分类: 嵌入式开发学习 2011-04-11 19:30 560人阅读 评论(0) 收藏
- arm920t中断系统详解 2011-08-12 16:21 652人阅读 评论(0) 收藏
- linux环境搭建和arm开发板环境搭建 分类: 嵌入式开发学习 2011-03-17 22:59 1403人阅读 评论(1) 收藏