找回密码
 注册
关于网站域名变更的通知
查看: 437|回复: 1
打印 上一主题 下一主题

Xilinx FPGA Vivado 开发流程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-4-13 15:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

大侠好,欢迎来到FPGA技术江湖。本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

  ]! |+ X1 b& H! u' n% ?

系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。本次带来Vivado系列,Vivado开发软件开发设计流程。话不多说,上货。

' i. V/ {8 X& M6 q, `1 ^6 T
Xilinx FPGA Vivado 开发流程

: f" c) u0 b- D# m( W$ Z

2 Q0 H* |3 j% e6 f
% K8 W# r" @$ u4 {+ n- U

在做任何设计之前,我们都少不了一个工作,那就是新建工程,我们设计的一些操作,必须在工程下完成,那么接下来就向大家介绍一下新建工程的步骤。那么我以简单的二输入与门为例向大家介绍一下操作步骤。


# f( U. M% N/ a+ P; m$ l

在后续的开发设计中,我们会做各种各样的设计。每个设计都有自己的名字,在上述文件内,用实验的名字命名一个文件夹。名字的话一定要带有某种含义,不建议随便给个字母序列当做名字。例如:第一个要做的二输入与门的设计,命名为and_gate2_1。

- s, r/ S) I" @  r* E9 \5 d& F# {& V

做好设计前准备后,我们开始新建工程。

$ b' Y" R+ n6 l( C) q: ^

* 新建工程


2 Q! |% m% W7 l4 R

双击打开Vivado。

" E9 a3 m7 |. ?* o5 E! b3 V" r


6 }! z; C8 U2 N. c. [) K

; v) n7 E: x: l: V" c- [


, ^1 \, q- U% z! ~6 A' W

在Quick Start中,我们选择Creat Project。打开新建工程向导,如下:

6 |$ e9 [2 k+ Q' `$ g2 h3 ?) F1 ?
( O3 {+ `: S& j( c

5 a0 V9 o: I6 `# a) E
! v; c/ I3 c# \8 P% D2 C

4 a7 _, `9 i! D1 y

. k# [2 V0 Z5 H" x' M9 i) p
' ?& A! y- U+ \

3 L* |; [8 e( S0 @8 S. a  i
此界面为新建工程引导,此步骤没有可以设置的内容,所以直接点击NEXT。

0 W; [- K# l5 w! e

5 @; k2 C2 m4 r: E1 b( O
' t/ }  f" Y4 t: Y8 R4 x9 l

" h  Q) ?  e" ~4 O+ _/ z/ y
8 |6 y( D! f/ g
- ^) u+ K2 G: h
在此界面,我们第一步,需要给我们的工程起一个名字,在此我们起名为and_gate2_1。在第二步设置工程存放路径,要求无中文路径。第三步,如果你指定路径位置没有对应的and_gate2_1文件夹,那么我们就可以勾选上,软件会自动帮我们新建。由于我已经新建过了文件夹,所以此处我没有勾选此选项。设置好之后,点击NEXT。
0 {1 O# P. Y# a" D1 P; R

  k/ y! v+ @0 _+ [$ a1 A
5 A6 @3 S8 E9 C" d

! p$ q9 J: }. m* ~" A

4 l( O' E9 l8 q2 N, F

; d( [" _- y# Q  ^; a

, }+ ]  D# x' g/ S0 a
6 w; ~" p# V3 d. p4 I0 {# t1 E
此界面我们设置工程类型,选择RTL Project。在这个选项下面,还有另外的一个选项。这个是让我们选择是否创建源文件。图示中选择不新建,在建完工程之后我们在新建源文件。继续点击NEXT。
1 ~" a3 }- K- k* Y

& u+ r& K8 f3 v! {8 h( T7 e0 \2 N

% K5 M3 e# R# w0 b

0 e7 H8 d" I2 U9 D5 @% \' N3 P

2 X' g+ |8 i5 s: m7 w, v: Y

$ L( A$ B- n1 l6 Z0 i% N- @& E

在这个步骤里面,我们选择对应开发板的芯片型号。我以SANXIN-B04为例,芯片型号为XC7A35TFGG484-2。可以在搜索框里直接输入,在下面的选项里面我们选择第一个,如图所示。选中之后点击NEXT。

. ]9 O' s  g4 ~* @& r


1 n0 f1 o6 A: D0 I( D1 r


  O  X$ R; R; z4 I6 d, n+ m' H5 J5 x* U


% m+ X( U; \( h9 p3 B$ h8 {

最后一步,为工程的信息展示。确认信息无误后,点击Finish。至此,我们的工程就新建完成了。


4 P2 _9 G$ _9 s3 b! W


+ E& M% c. J- D7 R% Z% B5 l  @

3 K5 o1 P  P0 e2 e


  y, ~. P0 e% I: f, a+ w

我们把整个界面分为5个区域,如上图所示。

1、菜单;

软件的常用功能全在此区域,方便我们进行后续操作。每一项的作用,会在后续的讲解中为大家介绍。

2、源文件;

新建文件可以在此区域,在这个窗口下面,有三个选项,我们在第一个选项中可以看到代码文件的层次结构。

3、属性;

窗口会显示所选内容的具体信息

4、信息;

展示任务进度,编译信息等内容。

5、报告;

展示工程信息以及状态。此外编写代码也是在此区域。

& e# r) W, t2 j) l7 B

通过以上的介绍,我们明白了各个区域的作用,接下来我们就新建文件开始编写代码:

* c7 Q# z9 E, n" V5 V1 T

. c, o0 w4 p; D/ R& y8 h


; l0 u$ e8 R7 T  t1 C/ Y% L/ m: ]

* X6 |) G, l) v& W  k  l3 R- {( y

9 J5 Q/ }8 [) R' @

在源文件窗口,点击+号。如下图:


! t  ^) b- x; W


$ p8 N( F! W6 V1 X  U/ J" [


+ ^5 u! U- ]& X' [' _' x

5 |% C. w! D7 ]0 V3 a, z1 ~. `( j* X" R1 V

三个选项,第一个是添加或者新建管脚约束文件,第二个是添加或者新建源文件,第三个是添加或者新建仿真文件。那么我们选择第二个选项。


* y, F* C2 g; A! a


$ I& B5 ?8 J" C! t


9 Y( @9 h. r% R5 a0 _


2 v1 \7 }+ w9 w* \0 q


/ p  s* }: e8 i: ^+ a6 C! i

选择好之后,点击NEXT。然后按照上图中所示,点击Creat File;


9 g- j' O. K0 P. ]

+ n) D# u5 b; o

7 p) ^; w$ n: {8 y4 D+ `8 ~8 z9 a

! x- B/ }- V2 Q- B) K' y. }+ V


) y3 D: T5 Z' M- p4 c

在File name一项中,填入文件名,其他保持默认,然后点击OK,再点击Finish。


% Z7 Z- E: f5 s4 g5 N' n

7 N& [6 \1 K' a2 J


4 I+ k4 |0 C2 W  y5 Y

3 Z" F. S0 \- v5 Z$ t7 w, |3 ?3 O& x

, o# P; g3 W# v0 F, _8 P

此界面我们可以提前填入端口,选择好端口方向以及位宽。然后软件就可以帮我们写好代码的端口定义部分。如果不需要可以直接点击OK。

# H$ d- E5 J- {5 ~

" \4 v- p0 ^2 J8 m% c" U0 T


; G0 E) S' M! b6 b8 G

( R8 _; V6 {: F6 V! a% y9 a

+ G4 P8 E- b: P' A3 l

再点击YES。

7 t/ \, J- t  N

% |; y! p+ h" j

新建好之后,会出现如下图:

2 E$ P' _9 T, G. ]* i1 |

+ p; ]! h* r, B: f, t7 ?0 O9 f, K7 o


& t5 w6 m* H# M2 l


$ c4 r# S7 l4 A


: C8 i* D2 J' _

在Design Sources中,可以看到我们新建的文件。双击打开开始写代码。自动生成的代码如下:


1 C. B  ]1 x& m3 I6 }


( p) o+ {/ ~9 ~$ _" B" Z


- m( [" @) h  S8 c3 l9 L3 n  z: _

/ j5 M8 M: V! v  O) U5 w


, g6 e- b9 x$ i

为了更好的向大家展示,我将代码文件中的注释先删除掉。代码如下:


3 T& D9 R% w0 Y3 t  F! L1 Z


$ o$ [- x' ]3 X9 H( L7 P: J: O/ P


! P5 o; ~# `8 ]


9 A! ~1 g1 B/ O$ \


) U# k0 J' h" H- I* ~0 \

为了验证代码的正确性,还需要写测试文件进行仿真测试。仍然点击+号新建文件,只不过这次我们选择第三个选项:

1 g$ r4 m; J5 @9 M& F


  N/ G. G# r3 W

, e! v. J  y0 {

, g' |  m5 g! w& ?7 \# s+ Z

# y0 r% F0 w5 f% Y: ~

点击NEXT;选择Creat File:


) b: Q8 C( c9 F3 L; @: Y9 D


/ |* M4 p0 M- l


' C+ n% A) U' u4 w

  H' D# |- P/ z. [1 {5 ?


# J1 L1 k2 f3 ?7 Y6 `- C


7 c& n: L  X6 T# @- f3 z


  Z1 L  j1 ~# B+ g, R

! p% U' ^/ p& v


* `- {3 s/ K6 P

点击OK,点击Finish。定义端口界面直接跳过,因为我们的仿真文件没有端口。

, F  u" B) g: b5 J; Q


& e* d+ U: G. }3 x


- Z5 ^" H% ?# x2 g# o* y" A* B% m3 D; ~

/ M; L$ C; J$ l; {

新建好之后,按照上图所示,双击打开文件。代码如下:


: @* P# _4 P5 c9 D) f7 v

5 z2 v, _2 E( H# x$ U6 V6 D

2 i% U7 c9 y+ v- h9 O  T  |1 |

* b# w; w- y* g$ Q3 b# {

6 \( f) r* |% X. H

/ f  f" J1 U- a0 e+ i1 n2 Q6 R

我们可以使用随机数来产生我们需要的输入,代码写完之后,我们可以直接打开仿真。


) P% w0 x  Q' J  j. D

+ r: N3 x4 F. Y  V4 P6 J

6 w3 W. W0 k* B& f) x! G


7 Q1 u9 [) B; Q( R


! J/ T4 B" J) r0 J# w/ Z

; k' R/ a( D5 d/ a

点击如图所示的选项,打开软件的仿真器。

' o# B6 k3 }! T! u# T# W


, [  o( H8 c# T* P


, J  Z. c* s- ^+ b

# F- g! t+ t0 P$ n6 q


- K3 n9 R5 Q2 I( b' V- b! r* @

0 W0 P; n# G' ]0 w. g2 D


% h/ m9 W* i7 F# R; S2 Y

仿真图打开后,我们点击如图所示的按钮,可以看到全部波形。在仿真图中,我们可以看到后半部分波形没有变化,这是因为我们随机数生成了20组,每组20ns,所以总时长为400ns。但是仿真软件是默认运行1us的,所以就看到了如图所示的情况,在此,大家可以随意生成随机数的个数。我们验证仿真时,只需要看前400ns的波形就可以了。按照波形显示,我们可以验证到波形输出与与门真值表相同,所以最终结果是正确的。至于下板验证后续再出相关文章说明。

: `7 \, l8 L. n9 D
# G9 U$ A$ o$ C% Y& e1 G8 m
. H% J8 ~9 Y# g

该用户从未签到

2#
发表于 2023-4-13 18:07 | 只看该作者
刚开始学,你这个流程很详细,有没有开发包
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-20 06:53 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表