百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

「原创博文」一个完整的vivado工程搭建

bigegpt 2024-08-10 12:10 14 浏览

记得前段时间玩了一下vivado,现在开始有点渐渐忘了。趁着没彻底忘记,赶紧做下笔记。看来,岁月真的是一把杀猪刀,人越老,记性就越差。今天,第一篇关于vivado的文章是vivado工程的搭建。

本篇博文所用到的软件是vivado2014.4,用到的开发板是zybo,并以一个简单的流水灯例子进行试验。

一、首先,打开vivado软件,主界面如图1所示。

图1 打开vivado软件

二、点击“Create New Project”,在弹出的新建工程向导中点击“Next”,弹出设置工程名和工程路径的对话框,如图2所示。在“Project name”项中输入工程名water_led,在“Project location”项中输入或选择工程的路径,而“Create project subdirectory”如果勾选,则会在所选的工程路径中创建一个名字与工程名一样的用于存放工程的新文件,否则直接在所选工程路径下创建工程。

图2 设置工程名和工程路径

三、点击“Next”,弹出选择工程类型的对话框,如图3所示。选择RTL类型,请注意RTL类型下有“Do not specify sources at this time”选项,意思是在新建工程过程中不指定源文件。假设不勾选该选项,后面将会连续弹出新建或添加已存在的源文件、添加已存在的IP、新建或添加已存在的约束文件,分别如图4、图5和图6所示。由于现在不需要新建或添加任何文件,故这里勾选“Do not specify sources at this time”。

图3 选择工程类型

图4 新建或添加已存在的源文件

图5 添加已存在的IP

图6 新建或添加已存在的约束文件

四、点击“Next”,弹出选择器件型号的对话框,如图7所示。如果所用开发板是评估板的话,其型号可在“Boards”选项卡中进行选择,如图8所示。而本次试验的开发板并不是评估板,故在“Parts”选项卡中进行器件型号的选择。图7所示,器件家族“Family”选zynq-7000,封装“Package”选clg400,速度等级“Speed grade”选-1,温度等级“Temp grade”选商业级C。

图7 选择器件型号

图8 选择评估板器件型号

五、点击“Next”、“Finish”完成工程的创建。创建工程后的主界面如图9所示,其中左侧面板是设计流程的管理,从源文件的添加到综合、仿真、布局布线、到最后板级调试,都可以通过点击相应的按键来完成;中间上面的面板是工程文件的管理;右侧面板是工程信息总结,包括工程的基本信息、综合实现所消耗的资源信息等;底部面板是各种信息的输出,包括编译信息、报告等。

图9 新建工程后vivado主界面

六、在vivado主界面左侧面板点击“Add Sources”按键为工程新建源文件,如图10所示,选择“Add or create design sources”,点击“Next”。

图10 新建源文件1

七、在弹出的对话框中,点击“Create File...”,文件类型“File type”选Verilog,文件名为water_led,如图11所示。点击“OK”、“Finish”、“OK”、“Yes”,完成Verilog源文件的新建。

图11 新建源文件2

八、为water_led.v添加实现流水灯的代码,如程序清单1所示。由于clk引脚连接到125MHz时钟下,故延时0.5s需要62500000个时钟周期。

程序清单1

/***************************Copyright*********************************** ** CrazyBird ** http://blog.chinaaet.com/crazybird ** **-----------------------File Infomation-------------------------------- ** FileName : water_led.v ** Author : CrazyBird ** Data : 2015-11-22 ** Version : v1.0 ** Description : led display as water ** ***********************************************************************/ // synopsys translate_off `timescale 1 ns / 1 ps // synopsys translate_on module water_led #( parameter C_DATA_WIDTH = 4 ) ( input rst, input clk, output [C_DATA_WIDTH-1:0] led_data ); //------------------------------------------- // 0.5s delay localparam DELAY_TOP = 26'd62500000; // delay 0.5s reg [25:0] cnt; // counter always @(posedge clk or posedge rst) begin if(rst == 1'b1) cnt <= 26'd0; else if(cnt < DELAY_TOP-1'b1) cnt <= cnt + 1'b1; else cnt <= 26'd0; end wire cnt_done = (cnt == DELAY_TOP-1'b1); // count done flag of 0.5s //------------------------------------------- // led display as water reg [C_DATA_WIDTH-1:0] led_data_temp; always @(posedge clk or posedge rst) begin if(rst == 1'b1) led_data_temp <= {{(C_DATA_WIDTH-1){1'b0}},1'b1}; else if(cnt_done == 1'b1) led_data_temp <= {led_data_temp[C_DATA_WIDTH-2:0],led_data_temp[C_DATA_WIDTH-1]}; end //------------------------------------------- // data output assign led_data = led_data_temp; endmodule //****************************End File**********************************

九、接下来对water_led模块进行仿真。在这里采用以前博文中介绍的验证平台进行仿真来验证设计的确定性。验证平台的组织结构如图12和图13所示。

图12 验证平台组织结构1

图13 验证平台组织结构2

十、将water_led.v文件放在rtl文件夹中,将测试文件testbench.v放在testbench文件夹中,其中testbench.v的代码如程序清单2所示。

程序清单2

/********************************Copyright****************************** ** CrazyBird ** http://blog.chinaaet.com/crazybird ** **----------------------------File Infomation--------------------------- ** FileName : testbench.v ** Author : CrazyBird ** Data : 2015-11-22 ** Version : v1.0 ** Description : testbench of water_led module ** ***********************************************************************/ // synopsys translate_off `timescale 1 ns / 1 ps // synopsys translate_on module testbench; //--------------------------------------- // Variable definitions reg rst; reg clk; wire [3:0] led_data; //--------------------------------------- // Clock generator parameter CLK_CYCLE = 8; // 125MHz initial begin clk = 0; forever #(CLK_CYCLE/2) clk = ~clk; end //-------------------------------------- // Module instantiation water_led #( .C_DATA_WIDTH(4) ) u_water_led ( .rst (rst ), .clk (clk ), .led_data (led_data ) ); //-------------------------------------- // Module initialization initial begin rst = 1; #(CLK_CYCLE*10); rst = 0; #(CLK_CYCLE*10000); $stop; end endmodule //****************************End File**********************************

十一、为了减少仿真的时间,将water_led模块中的DELAY_TOP=26’d62500000改为DELAY_TOP=26’d500。接着修改验证平台run目录下的sim_start.bat批处理文件,如图14所示和程序清单3所示。以图形界面的形式启动modelsim,且无需加载任何器件库。

图14 修改sim_start.bat批处理文件

程序清单3

call sim -gui

十二、双击sim_start.bat批处理文件,启动modelsim仿真软件,仿真结果如图15所示。很显然,led在做流水运动,因此流水的功能是正确的。

图15 仿真结果

十三、接着新建约束文件对管脚进行约束。在vivado主界面左侧面板点击“Add Sources”按键为工程新建约束文件,如图16所示,选择“Add or create constraints”,点击“Next”。

图16 新建约束文件1

十四、在弹出的对话框中,点击“Create File...”,文件类型“File type”选XDC,文件名为water_led,如图17所示。点击“OK”、“Finish”,完成约束文件的新建。

图17 新建约束文件2

十五、为water_led.xdc添加约束代码,如程序清单4所示。

程序清单4

set_property PACKAGE_PIN L16 [get_ports clk] set_property PACKAGE_PIN Y16 [get_ports rst] set_property PACKAGE_PIN M14 [get_ports {led_data[0]}] set_property PACKAGE_PIN M15 [get_ports {led_data[1]}] set_property PACKAGE_PIN G14 [get_ports {led_data[2]}] set_property PACKAGE_PIN D18 [get_ports {led_data[3]}] set_property IOSTANDARD LVCMOS33 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports rst] set_property IOSTANDARD LVCMOS33 [get_ports {led_data[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_data[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_data[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {led_data[3]}]

十六、接下来对设计分别进行综合、实现、生成bit流文件(记得将water_led模块的DELAY_TOP改回26'd62500000),如图17所示。当然,也可以直接点击第三步“生成bit流”完成整个工程的编译。如果编译过程中出现错误,请返回检查,这里就不多阐述了。

图17 工程编译流程

十七、生成bit流文件后就可以将其下载到zybo开发板上运行了。首先,将zybo开发板正确与电脑进行连接。接着打开目标器件,如图18所示。

图18 打开目标器件

十八、在弹出的对话框中选择“Program device”——>“xc7z010_1”,如图19所示。然后点击“Program”,如图20所示。编程器件之后,zybo开发板上的四盏灯就像流水一样流动起来了。

图19 编程器件1

图20 编程器件2

第一个完整的vivado工程就这样完成了,是不是很简单呢?呵呵~~~

招聘信息

相关推荐

有些人能留在你的心里,但不能留在你生活里。

有时候,你必须要明白,有些人能留在你的心里,但不能留在你生活里。Sometimes,youhavetorealize,Somepeoplecanstayinyourheart,...

Python学不会来打我(34)python函数爬取百度图片_附源码

随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...

软网推荐:图像变变变 一“软”见分晓

当我们仅需要改变一些图片的分辨率、裁减尺寸、添加水印、标注文本、更改图片颜色,或将一种图片转换为另一种格式时,总比较讨厌使用一些大型的图像处理软件,尤其是当尚未安装此类软件时,更是如此。实际上,只需一...

首款WP8.1图片搜索应用,搜照片得资料

首款WP8.1图片搜索应用,搜照片得资料出处:IT之家原创(天际)2014-11-1114:32:15评论WP之家报道,《反向图片搜索》(ReverseImageSearch)是Window...

分享一组美图(图片来自头条)(头条美女头像)

...

盗墓笔记电视剧精美海报 盗墓笔记电视剧全集高清种子下载

出身“老九门”世家的吴邪,因身为考古学家的父母在某次保护国家文物行动时被国外盗墓团伙杀害,吴家为保护吴邪安全将他送去德国读书,因而吴邪对“考古”事业有着与生俱来的兴趣。在一次护宝过程中他偶然获得一张...

微软调整Win11 24H2装机策略:6月起36款预装应用改为完整版

IT之家7月16日消息,微软公司今天(7月16日)发布公告,表示自今年6月更新开始,已默认更新Windows1124H2和WindowsServer2025系统中预装...

谷歌手把手教你成为谣言终结者 | 域外

刺猬公社出品,必属原创,严禁转载。合作事宜,请联系微信号:yunlugongby贾宸琰编译、整理11月23日,由谷歌新闻实验室(GoogleNewsLab)联合Bellingcat、DigD...

NAS 部署网盘资源搜索神器:全网资源一键搜,免费看剧听歌超爽!

还在为找不到想看的电影、电视剧、音乐而烦恼?还在各个网盘之间来回切换,浪费大量时间?今天就教你如何在NAS上部署aipan-netdisk-search,一款强大的网盘资源搜索神器,让你全网资源...

使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建

前言回顾在上一篇文章《搭建持久化的INFINIConsole与Easysearch容器环境》中,我们详细介绍了如何使用基础的dockerrun命令,手动启动和配置INFINICon...

为庆祝杜特尔特到访,这个国家宣布全国放假?

(观察者网讯)近日,一篇流传甚广的脸书推文称,为庆祝杜特尔特去年访问印度,印度宣布全国放假,并举办了街头集会以示欢迎。菲媒对此做出澄清,这则消息其实是“假新闻”。据《菲律宾世界日报》2日报道,该贴子...

一课译词:毛骨悚然(毛骨悚然的意思是?)

PhotobyMoosePhotosfromPexels“毛骨悚然”,汉语成语,意思是毛发竖起,脊梁骨发冷;形容恐惧惊骇的样子(withone'shairstandingonend...

Bing Overtakes Google in China&#39;s PC Search Market, Fueled by AI and Microsoft Ecosystem

ScreenshotofBingChinahomepageTMTPOST--Inastunningturnintheglobalsearchenginerace,Mic...

找图不求人!6个以图搜图的识图网站推荐

【本文由小黑盒作者@crystalz于03月08日发布,转载请标明出处!】前言以图搜图,专业说法叫“反向图片搜索引擎”,是专门用来搜索相似图片、原始图片或图片来源的方法。常用来寻找现有图片的原始发布出...

浏览器功能和“油管”有什么关联?为什么要下载

现在有没有一款插件可以实现全部的功能,同时占用又小呢,主题主要是网站的一个外观,而且插件则主要是实现wordpress网站的一些功能,它不仅仅可以定制网站的外观,还可以实现很多插件的功能,搭载chro...