在这个步骤里面,我们选择对应开发板的芯片型号。我以SANXIN-B04为例,芯片型号为XC7A35TFGG484-2。可以在搜索框里直接输入,在下面的选项里面我们选择第一个,如图所示。选中之后点击NEXT。
) D* s5 {9 w4 D9 S4 o; R
0 g/ x" g8 c+ x% a2 [$ x3 a1 w
' z. @& j1 q( _$ f/ J& X9 @& x/ K. P3 {7 t! {+ g* a* l
最后一步,为工程的信息展示。确认信息无误后,点击Finish。至此,我们的工程就新建完成了。
2 B% F9 t5 S$ q1 x
% q9 V8 h- R7 u2 S/ X. w+ @0 {. O
5 j. [" M- u: ~0 m" N1 Y
5 d" x5 L9 Z# f; d/ O- W4 L
我们把整个界面分为5个区域,如上图所示。
1、菜单;
软件的常用功能全在此区域,方便我们进行后续操作。每一项的作用,会在后续的讲解中为大家介绍。
2、源文件;
新建文件可以在此区域,在这个窗口下面,有三个选项,我们在第一个选项中可以看到代码文件的层次结构。
3、属性;
窗口会显示所选内容的具体信息
4、信息;
展示任务进度,编译信息等内容。
5、报告;
展示工程信息以及状态。此外编写代码也是在此区域。
8 b, ~+ n+ ]! ]2 B
通过以上的介绍,我们明白了各个区域的作用,接下来我们就新建文件开始编写代码:
. Y+ d$ A/ y! C, M0 X* W
4 c1 m) }# ~7 R4 Y, W
0 M7 h1 L" _% n! s* t. D5 J. n* C4 G; P% G( U' }1 [
9 t( q W' m6 d+ Q; s4 \- H4 [
在源文件窗口,点击+号。如下图:
1 S! a! m! N# z1 K' ~/ O
5 h3 k( ?2 C) p1 N$ s F1 X/ t( r
0 n5 @7 n/ s) t5 G" u- ^9 \, k
6 V+ J# E1 n) [0 H
三个选项,第一个是添加或者新建管脚约束文件,第二个是添加或者新建源文件,第三个是添加或者新建仿真文件。那么我们选择第二个选项。
% S, K8 p7 w! M" s
1 W9 U; E. T. r ?7 o. L' N
4 A0 n1 N6 s+ } k: ^: |7 Z( z- e% w/ \- [
* W+ z3 i5 M3 Y5 Q
选择好之后,点击NEXT。然后按照上图中所示,点击Creat File;
( S+ A9 Q" ]/ Q! B' g
; r. a# O8 ^6 N' a9 M l
b! v, w2 b; J4 \- o' N
' w1 x( ~4 V& ^8 Q7 Z4 `. q( p. K
- G. ]4 h8 `) N \
在File name一项中,填入文件名,其他保持默认,然后点击OK,再点击Finish。
+ P* l; J/ ^% [5 x) e- y
. \3 x' @) g+ G
& p- _# R. z" @) C. |8 |
7 U& v- r+ I8 B! i r6 ^4 ^! j- k
: a) j0 s( V6 t, O0 r0 o
此界面我们可以提前填入端口,选择好端口方向以及位宽。然后软件就可以帮我们写好代码的端口定义部分。如果不需要可以直接点击OK。
1 ~: U, k' a8 o* {
& {; T$ ~1 b2 F' o5 `$ X/ e4 T6 d
2 z( W" N! {4 X7 t/ t/ d
9 c$ a% Y3 t: V6 `. o# {# v( ~
8 ]* S) T) ~' Y. @
再点击YES。
' V! Y, C6 V2 J4 k+ f
& |: \$ u' K4 a/ k$ k
新建好之后,会出现如下图:
! g9 ^# y8 u" J, }
9 l1 V+ C, {6 z6 k. m( P
* I& D5 {* ~3 K+ @4 }2 v
4 {9 P! E( t# r+ F( Y
% N$ ~) N- O2 ]6 i; k+ N
在Design Sources中,可以看到我们新建的文件。双击打开开始写代码。自动生成的代码如下:
2 F2 K; R4 r; J6 e- k
( V4 ^ v. |4 H" _% Y% n. ~/ T
9 H0 G7 T) b2 h' o- H2 e
$ ~5 f4 Q1 r. D$ p# f( l
) {) h/ o% t8 u! O5 d1 T
为了更好的向大家展示,我将代码文件中的注释先删除掉。代码如下:
2 n$ r: o8 Z4 v
/ F0 x: e2 O! G/ i1 L' Y2 v$ a& E
+ z3 | q& X, f8 }; |
* o9 R. F. u% [
: t' b/ c- ~! y4 A# E0 v
为了验证代码的正确性,还需要写测试文件进行仿真测试。仍然点击+号新建文件,只不过这次我们选择第三个选项:
$ g. C( O4 T. [2 z5 d
% c% Z+ F) n! `
. o z) L6 n3 H3 V. {+ F4 R7 q4 y- M9 v& I
2 u$ y" i6 ?* |- n9 W+ x
点击NEXT;选择Creat File:
$ J2 Q6 L1 l& t$ g
- t- E7 Z" s) a3 G, n, d! x$ u- D
7 j# \9 L' n7 X4 Y* N; y5 H
$ W7 _ t! q; s, ~4 J% x+ I$ Z# G! H
) k) r7 w( [9 |. h3 ~
% E! H' M6 c. t6 N4 s6 _0 U& T
, ~& Z0 t9 }2 c9 N( e
6 P3 `' Z8 L, p# a/ P1 ~
3 W4 F, g1 o2 X+ K# z' x
点击OK,点击Finish。定义端口界面直接跳过,因为我们的仿真文件没有端口。
; O8 f6 b! D; t2 h0 ?% b8 q+ L
7 j, Q' p# j3 n: L/ u% ^5 Y! g8 C5 O, g
! Z7 A8 r( H& {% a! T7 B
新建好之后,按照上图所示,双击打开文件。代码如下:
$ B3 n( I* J# g, C' } ?2 F0 N
& [1 D/ K4 Y1 o L4 q
% c0 P# a1 M3 L4 s0 x
3 R5 }; E! J% G! ~! p m
8 U* `% ]2 s# v1 o
' A, H7 `4 e7 C" e* J1 b1 o
我们可以使用随机数来产生我们需要的输入,代码写完之后,我们可以直接打开仿真。
5 P4 N" _' S% m8 t( w6 |! ^. g
( f$ p8 }& W0 V1 O+ g% n( z0 B
" K4 ]# [% K5 I8 r
7 j7 P8 l7 @3 I: h0 ~2 ~. ?: S+ h1 I# x: E' D0 x* y
9 t8 U; u4 N2 Q
点击如图所示的选项,打开软件的仿真器。
& I. D- B1 i! K+ d. j) P8 t+ X% E
G/ j5 S5 ]" ?: l3 ^7 N0 a6 [" D
1 V+ G% G" V" d) h! A" u1 N+ f4 L3 x( U
1 ~* U3 I3 c q3 H% X
9 S; U8 |. \2 ^
3 v- A1 r4 f9 u) w$ C
+ z6 Q! h9 |1 r" Y: `' \6 ^8 @/ f
仿真图打开后,我们点击如图所示的按钮,可以看到全部波形。在仿真图中,我们可以看到后半部分波形没有变化,这是因为我们随机数生成了20组,每组20ns,所以总时长为400ns。但是仿真软件是默认运行1us的,所以就看到了如图所示的情况,在此,大家可以随意生成随机数的个数。我们验证仿真时,只需要看前400ns的波形就可以了。按照波形显示,我们可以验证到波形输出与与门真值表相同,所以最终结果是正确的。至于下板验证后续再出相关文章说明。
/ T4 g! y3 \, e- i
1 r/ W( u4 x7 u) B