硬件平台:xilinx kf705(实际上跟kc705基本一样) 芯片是kintex-7
软件:vivado2018.2
系统:WIN7
目录
安装
创建工程
添加源文件
添加testbench文件
综合(时序约束)
实现(管脚约束)
生成比特流
ILA IP核的使用
VIO IP核的使用
IP核的例化
注意:
1、有时候综合不了,把安全软件关掉就可以了。
2、bitstream错误有时候提示在log框,但是实际上错误信息在message框。
安装
1、一开始的关于连接到网络检查vivado版本的选项我都选了ignore
2、
选择第二个
Design edition
3、
安装的软件都确定安装,然后安装完毕,软件自动开启license manager,
点击load license,选择license(有史以来...的那个)
然后点击view license status
创建工程
新建第一个工程:
- Create project
- Next
- 工程名和工程路径
- RTL工程
- Next
- Next
- 选择芯片,后面应该还可以更改(tools-project或者tool-setting里面)
- Finish
添加源文件
点击左边flow navigator
- Add sources
- next
- Create file
- 写verilog文件
- 直接ok
- yes
- 编写完文件后
添加testbench文件
- 在simulation sources里面右键,选择add sources
- 同样的操作。(如果此时有语法错误的文件,系统会在simulation sources里面出现一个synax error的文件夹,里面的文件是语法错误的文件)
- 进入仿真,点击 run simulation→ run behavioral simulation 行为仿真
- 这样的错误
- 原因是我的模块名和使用时的接口模块名没有对上,名字不一样
- 仿真同时可以实时修改程序,注意修改时间以更好地查看时序
- 然后重新仿真
- 关闭仿真时,点击break或取消,然后点击仿真界面右上角的叉(不是整个软件的退出)
综合(时序约束)
- 点击左侧向导中的,run synthesis
- 完成后点击,oepn synthesis design,点击edit timing constraints 进行时序约束
这一列有原理图,时序约束,时序报告都可以点开看一下。
复杂的时序约束可以根据这个列表来创建。
Clock→create clock,给时钟编辑名称,然后source object,点击空白框右边的3个点,选择对应的需要收到约束的时钟管脚,默认点击Find,然后将管脚,点击向右的箭头,放到
- selected里面
- 然后设置周期,rise at指的是上升沿的位置,0的话就是一个周期的一开始就是上升沿,下降沿在一半的周期以后。
- 设置完时钟后,点击set input delay,在create clock下面,
- 设置成上面这样就可以了,然后是output delay
实现(管脚约束)
- 然后run Implement(需要一定时间,看右上角的状态)
- 完成后点击左边 open synhtesized Design 然后右上角Default Layout改为I/O Planing
- 把I/O std全部改为LVMOS33
- 我是查看原理图,找到LED,CLK和rst的管脚,去进行管脚约束
- 对照表是LED0=AB8,LED1=AA8,LED2=AC9,LED3=AB9,LED4=AE26,LED5=G19,LED6=E18,LED7=F16,
-
- 此处LVCMS字体变成红色我也不知道为啥,如果没事我就不再提了(错了,这些红色的改成lvmos15)
- Clk=AD12(SYS_CLK)(这里发现不行,我该用user_clk才可以,改成K28),reset=y29(一个开关)
- 为了保存,点击关闭,然后保存
- 出现了
- 这个是管脚约束文件的名称
生成比特流
- 点击Generate bitstream 编程实现
-
- Yes
- 出现了错误
- 我把clock换成了user clock就可以了,好像是Bank33不支持3.3V电压模式?
- 之后y0~y3也出现了这个错误,查看了原理图后,于是我将她们都改成了LVCMO15.
- 之后,实现完成,我想看一下门级电路,点开左边RTL anysis的schematic
- 是下图这样子,分别是一个分频器,一个计数器,一个38译码器。
- 然后是开启开发板,连接电脑
- Usb连接后 ,等待驱动安装完成,然后,
- 点击左边 open Hardware manager,会提示no hardware target is open
- 点击open target,open a new target
- 我选了本地,next
- 然后出现了there are no debug core ,点击program device
- 点击program之后,程序就被写入了,我的跑马灯亮起来了(兴奋)。
- 然后断电,提示
ILA IP核的使用
关于IP核的使用
- 点开ip catalog
- 点开Debug&Verification
- Debug文件夹下有个ILA,或者直接在软件的搜索框里面填入搜索文本ila也可以
- 双击它
- 默认设置直接ok
- 我点击了generate
- 然后例化ila核
- 然后上电开发板,打开hardware maneger
VIO IP核的使用
点击IP catalog
在搜索框内输入vio
按照需求设置输入输出窗口。
在使用vio的时候,vio 的输出对应的是模块的输入端口,比如一个模块的一个输入开关,
应该连接到vio的输出上,并且这个开关我是只定义为wire变量,没有用input定义,因为用了input会报错。
IP核的例化
1、到工程文件下
D:\vivado_default\My_self\spi_ila_freq_uart\spi_ila_freq_uart2\spi_ila_modify_10M.srcs\sources_1\ip\clk_wiz_0
上面红色字体是工程名
进去之后找到.srcs后缀文件夹,source→ip→对应ip文件夹→找到后缀.veo文件
用记事本打开,可以看到有初始化程序,
比如这样
clk_wiz_0 instance_name
(
// Clock out ports
.clk200m(clk200m), // output clk200m
// Clock in ports
.clk_in1(clk_in1));