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

关于FPGA 仿真及Hello World测试程序的详细步骤

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-3 11:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
详细步骤9 Q" b- H6 `/ L3 z

" T% g! J# O2 {8 V1 QuartusII 13.0.1安装&破解
' H/ @7 V0 S* z. v1 s% o8 P' v2 y& O$ x" e* V
1)按照参考文献⑧的步骤,到度盘链接:https://pan.baidu.com/s/1I_6-9f0wvEpF_utkTjjsUQ 密码:u6ef,将QuartusSetup-13.0.1.232还有破解器下载到电脑本地磁盘(cyclone好像不用下,QuartusSetup自带,如果实在需要再下载,反正我下载下来安装的时候提示我已经安装过了,无语。。。)。
' L# r( A! d9 u; a  L9 f( D% I! L4 e7 C; Q+ P$ c5 Y9 k0 ]
2)双击QuartusSetup-13.0.1.232.exe,选择安装位置,一路next将Quartus安装到本地磁盘。最后,done!& H- y+ X  t* y: T% o1 ^. b/ h! O, z
" j; q: o  b; Y9 w0 m0 q6 a
3)如果你的电脑是32位,将破解器中的“Quartus_13.0_x86破解器.exe”复制到 “你的安装路径\quartus\bin”目录下面,并且双击,将生成的"license"保存。+ Q1 U. c5 Q( x0 x: E7 j- u
- v6 q! z$ U# G$ N: w# f; O' I$ C
4)如果你的电脑是64位,将破解器中的“Quartus_13.0_x64破解器.exe”复制到 “你的安装路径\quartus\bin64”目录下面,双击,将生成的"license"保存。1 J1 Y( X9 [" v6 U8 M

5 p. B4 Z' a) z4 j# u5)选择对应版本,打开QuartusII,Tools->License Setup->(NIC)ID 选择第一个作为CID复制之,关闭Quartus。
6 \# q5 E* y7 @$ R3 l: n, p4 A: b
* J" |2 n2 \2 n& J3 G8 X( A1 B : ?: i7 h4 l8 X" `4 G* x% X

# A  f# z8 g' J4 e3 D6)打开之前保存的"licence.dat",将(NIC)ID替换掉里面的xxxxxxx,打开Quartus 定位到Tools->License Setup,License file选择刚刚修改的license.dat,出现以下界面说明破解完成' k3 c  [1 U% {. U5 d5 m3 J
; R5 p4 _& e# V0 O

. C1 j; B3 s- a& v3 R. R
8 R& l) n: ^. M3 g8 B
9 ]9 t' O2 k. r4 g5 K1 [4 K3 @1 x2 ModelSim SE 10.1a安装&破解& b" U0 B# B  S( V

6 r# ?! d" P: DModelSim是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器,比Quartus自带的仿真器要强大很多,它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。目前有se、de、pe等多个版本,对应Altera和Xilinx还有对应的OEM版本,所有的版本功能最强速度最快的就是se,反正也是要破解,自然就装最强的版本了,和Altera网站上的modelsim的区别在于,se的版本我们需要自己编译对应的库,所以Altera和Xilinx的都是自带对应的库无需编译的,像我这样同时装了Quartus II和ISE的,自然还是自己编译方便一点。; s/ b: [4 Y+ t, m0 M
& r8 V- B  f, l4 M# O# G
1)按照参考文献⑦,将modelsim se 10.1c emouse.rar下载到本地,解压之。
. Z4 Q3 ?$ V! X0 j$ I& V
- {5 B( {9 Y" C* b' `5 m2)双击modelsim-win32-10.1a-se.exe选择安装路径,安装之,最后弹出一个对话框,点击“NO”即可。
) i# `3 T1 Q5 r  Q  r" Q/ M+ C: y# X2 C, ~/ N9 D+ o; h3 @' o9 z
3)将mentorKG.exe和crack.bat文件复制到安装根目录win32目录下,运行crack.bat文件,生成txt文件后另存为LICENSE.TXT
$ I& Q1 P! W/ f  b$ ?3 H& U$ {! c  n' t: @
4)我的电脑右键->属性->高级->环境变量,新增系统环境变量LM_LICENSE_FILE,值为LICENSE.TXT的路径,如:D:\modeltech_10.1a\LICENSE.TXT* X4 X; L' m& s5 p; _
4 N1 Q; ^# Q7 k4 K8 ^  ~9 y
5)运行Modelsim( W/ J6 D% J* E2 k0 V' _
4 C! `& I( b5 s! B
. L+ p# [" s* l7 j: c  h! S

3 i  @1 K1 p6 |/ e8 ?5 K6 |) l4 s9 x1 v8 y
3 编写测试程序, D( Q3 d  R8 P& \$ q
; x2 \$ R6 M9 i( D5 F
按照参考文献①
( Q" T( U. c- g- p& ?- E2 l* s7 R3 f
第一步:新建工程% M- I3 {1 M% J6 w$ c
File --> New Project Wizard...
3 C" d- x0 S4 c# p8 @3 I7 d& S8 i. R8 E1 `! s6 _; f/ A
, E5 Y9 \0 q; t8 D  P3 m

, X* u& r$ Q+ w+ a6 ^! o1.选择工程目录,指定工程名及设计入口,一般情况下建议工程目录,工程名称及设计入口同名,不能有中文路径;: P0 E- v$ I0 f: Z
2.添加已有文件,如果新建的工程,则直接跳过;
3 b% I0 N* C* J7 b) a3.器件选择,需要与实际用到的器件相同,Family选择Cyclone IV E,Available device这里选择EP4CE6F17C8;5 W# a# ]2 v) A, {
4.设置工具,一般直接next跳过;7 \& x! E( s. B' R3 y  J% a
5.信息确认,如果无误则点击Finish完成;' r$ l7 }' `8 K5 C( o
9 D/ Z/ q! S- q; u

- X( g0 K' i! [) e. E
! i- s$ n- s3 e& U修改默认配置:
9 o! ?4 V& C/ Y, m" H# l9 [Assignments --> Device..." N, q3 p: q. B4 N* @2 i
--> Device and Pin Option...
2 b+ z. @, a0 R2 l! m. D
. y2 A, X3 R$ M
/ f! ^$ B6 [: M$ I4 e1 ]0 s6 R8 W, P$ [2 G6 _# o
Unused Pins:未用到引脚选择,As input tri-stated;
& J7 E; F/ k% q! Z0 N9 p8 sValtage 引脚默认电压值,选择 3.3-V LVTTL;
! ?& d3 S5 G- a2 R% P! d
, g6 M6 @, Z3 c* a
- h4 T; G2 R, m& |0 q8 A  D( a8 B
, S# r# Q" J& r6 T: H* H9 M) f+ h第二步:建立HDL文件
/ [+ b6 h( C! X+ ^3 ZFile--> New...) p3 O" c) A  @, M& p/ G
Design Files --> Verilog HDL File内容如下:
. h- O; J% `/ \6 n( N1 n( W
+ I* |, i. A: S6 k. I8 _ + k  u: K8 M% o4 i  _7 ?
3 b/ N- X, x# @- b; a& ]- `

9 d2 v' k8 R5 P2 }& c5 x
  • /*
  • * 功能描述:流水灯演示
  • */
  • module demo (
  •     input clk,              // 时钟输入(外部50MHz晶振)
  •     input rst_n,            // 复位按键
  •     output reg [3:0] led    // 4位LED
  • );
  • // 寄存器定义
  • reg [31:0] timer;       // 用于定时器计数
  • // 计时时钟
  • always @(posedge clk or negedge rst_n)
  • begin
  •     if(~rst_n)
  •         timer <= 0;
  •     else if(timer == 32'd200_000_000)
  •         timer <= 0;
  •     else
  •         timer <= timer + 1'b1;    // 通过脉冲数计算时间
  • end
  • // 检测时钟的下降沿和复位的下降沿
  • always @(posedge clk or negedge rst_n)
  • begin
  •     if (~rst_n)            // 复位信号低电平有效
  •         led <= 4'b0000;    // LED灯输出全为低,四个LED灯灭
  •     // 时钟下降沿
  •     else
  •     begin
  •         // 50HMz的时钟下,50个时钟为1us
  •         if(timer == 32'd50_000_000)
  •             led <= 4'b0001;
  •         else if (timer == 32'd100_000_000)
  •             led <= 4'b0010;
  •         else if (timer == 32'd150_000_000)
  •             led <= 4'b0100;
  •         else if (timer == 32'd200_000_000)
  •             led <= 4'b1000;
  •     end
  • end
  • endmodule
    2 G' N' z* \2 c( @! W* b% N

9 A3 T9 F) l' |6 Z保存文件,名称与之前设置的入口文件相同;(不然会出现报错①). k9 V; G# Q) Z+ e( u9 U# s* W
# Q2 Q& a- U9 [6 N& Q& o
第三步:综合
3 `! g( t8 k7 Q% t* S0 O$ N点击Analysis & Synthesis进行综合;
# c; k" Q$ |0 h6 q' Y( W! Z8 M  ^8 s2 B
, D3 w1 g) J1 `8 b

1 e7 x5 d# `4 h  Q, @. N/ \成功+ J( Q+ ^9 Y9 }8 Q
+ t9 U( q/ c4 Q$ m  P% p6 w

# u. c3 M; M+ l4 k4 {. C( r' j2 O: X% {) h# |
第四步:引脚分配
/ m0 ~+ I( R7 z# {) D- }Assignments --> Pins Planner打开引脚分配页面进行分配;5 u! z' B9 E5 |, H- ?3 b0 ^$ `

  j2 q2 n3 ?% F
2 W; B" |* n5 u& O) ~0 `5 ]" ^4 Y8 u
双击引脚对应的Location,弹出引脚选择下拉列表
$ f, u: `% }: l% p8 l: @- `, j7 g: `& j$ c5 x- }- S0 V+ p
) [6 A+ T% C9 B4 H/ o6 _) ?+ W
  [6 J4 {: D* x9 c/ S2 \
+ j  [. ^0 Y/ ~. g0 \+ ?. H  {
按照原理图上分配对应的引脚:
. N! H9 j1 B# A/ }% pCLK   --> E16 F2 [) J4 `' X5 C9 q
LED0 --> E106 U; D1 Z1 s6 y& e) M% z0 T6 y
LED1 --> F9
3 n+ ?( T# G  PLED2 --> C96 E& ~9 U3 K+ u8 f* S
LED3 --> D9
7 ~' U% \& i( O1 b, S  P6 c2 sI/O Standard 根据实际电路选择电平标准,这里选择3.3-V LVTTL;: {" B* m/ B5 C( e
同一个Bank的引脚的电平标准必须相同;7 z8 Z8 Q: D* \/ D% Z; o) d# }& q; N
: G' A/ \# a: ^0 q
! ^9 o4 l! M7 c8 l' K- j
4 d: E9 W; _6 l: ]% |4 }" L; c9 x

% q9 @! E) N& g1 X/ R/ i! s9 @注意事项:
+ ~3 B7 i8 `& v9 U6 Y2 x  j必须综合之后,才能进行引脚分配,否则系统并不知道你用了哪些引脚;
& D+ c5 g8 L: {6 f% J* E
% x' L5 E! C2 z( H: `2 Z4 U# Z第五步:编译! D# h' w: B2 |/ o
双击Complile Design进行全编译;
9 z; o5 _* _3 s  [7 S: Y8 U3 N0 H. M# b  ^; a0 G/ p# D

& {! V( T9 c- ]/ L, N( T& a4 B+ S8 N; d2 A! D* {% r* Y( U
或者点击
5 y1 J; v( H3 W
9 m3 F/ l8 P* C2 _* ^ 5 {+ o2 u# E/ M. g& F% y' Z
' D; I4 |$ S7 I; Y
第六步:下载测试1 k% C# f; o- u0 T
通过JTAG下载至RAM
) d/ r9 m2 B* a* V3 p点击Program Device打开编译器;; w0 r3 p6 |' B# q2 q
点击Add File...添加output_files目录下生成的sof文件;
( V2 h. ~$ b3 S: E* ^+ j# J点击Start即可进行下载;- G! z1 R+ s3 R$ W% F$ l
下载完成后会自动运行,掉电后会丢失;+ u: J, e; r$ a

* N: B6 G: E% s) y3 s  I: v固化至配置芯片8 J0 c3 G4 T6 l9 D7 \$ O' t
文件转换:
8 F  }. U2 S) X/ ]& lFile --> Convert Programming Files...
5 D% k/ R* r5 J5 S( }Programming file type:
# t( J5 U, c# K: \选择文件格式,指定为jic格式,JTAG Indirect Configuration File(.jic)/ S# ]! F9 n, ^( J
Configuration device:
! r) H6 n+ P# ]9 o0 ^$ ]! L, V选择配置芯片型号,与目标板上的型号一致(EPCS16)$ q, p7 I5 E$ x! k% }
Flash Loader:与目标板上FPGA的类别一致;$ V8 A/ N; [% J- y2 y8 ~9 ^; t
Sof Data:选择编译好的sof文件;7 s' @1 X' z5 g" h. R2 a% P5 J& n+ ^
点击Generate生成jic目标文件;/ k# u. g: f8 r# U& \3 L" s
(此时可选择Save Conversion Setup... 保本配置参数,以便下次调入)) z0 Y* O: v5 E- ]; _) ~. B, h
下载固化:' D1 P! R: Q! ~* T3 P# ]5 K  ~, P: ~
点击Program Device打开编译器;$ t$ F/ d8 {2 A& _) W
点击Add File...添加output_files目录下生成的jic文件;6 U0 t$ u- N- d) y
点击Start即可进行下载;- y. M* u) g$ _! q: V
下载完成后,不会自动运行,需要重上电才能正常运行;7 Q! [1 R# X# ]- r% l
: e/ X0 ^0 x  v% z7 }( S5 c1 W
注意事项:! t3 o8 y) k# t
一般只有在完成调试完成后,交付测试时才需要固化,而在调试过程中,则没必要进行固化下载;
7 n6 W7 q+ C4 P) J1 @, Q7 v
: ~( ]$ v* m6 Q0 Y0 ]4 \9 V# V: G9 f2 p5 y  }# I6 s5 L" z$ S
( C5 K8 K) B  |/ ^! W, n. Z. z
4 Modelsim联合仿真5 ^$ n2 T9 x+ W# ]

" w' C9 U2 `0 M3 Z* i1)按照参考文献②,第一次用modelsim+quartus的时候需要在quartus中设置modelsim的路径,quartus->tools->options->general->EDA tool options ,在右边选择modelsim的安装路径\win32,如下图:
2 J9 d9 G. _& \: [7 s' i' N5 ^
2 t( `, _3 n7 B  O! q7 m
! M- i, V0 v7 s
9 a6 ^, v3 `7 H7 O
& u" w+ X# H3 K8 C
3 V" M" K5 }  f1 H9 E2)点击Quartus->Assignments->Settings
1 r* C, L% ?' X  ?! J" I, J
  z9 f0 ?' D2 _! n- d+ b % ?: O2 E' e. @7 p+ ?0 a
: Y0 I7 O1 `3 j. N1 r: z/ R! e' A
: K2 e0 Z% b- r& c6 P7 M3 F& i
选择Simulation->Tool name选择ModelSim
9 X9 g6 M& B$ Q1 @* g9 G3 t, H  ~3 r7 ^' R' ?: u: S
0 F/ a2 b2 a' P! h- V7 l

- B$ N; [% ]: D. @6 U1 ^; w: \先选择TestBenche None,点击OK/ B$ ?8 l: E' M; h- L# K6 K, m
+ l" X* O, |3 @

4 |0 M" R1 s- J2 O5 ^3 o* f/ }2 b- ?+ _# M' E
3)建立TestBench模板5 B" j1 R, {9 ]' h
; _7 [& x! t, A; Z1 A' P6 [
我们可以通过Quartus自动生成一个Testbench的模板,选择Processing -> Start -> Start Test Bench Template Writer,等待完成后打开刚才生成的Testbench,默认是保存在simulation\modelsim文件夹下的.vt格式文件/ k; c, k2 `8 I0 l( p8 T$ ]/ z
$ _3 t9 Q9 h4 ?* o& }1 _9 g: r

9 I7 v$ q* _3 K. Y* p$ G; D9 B, O
- Y, i) Z8 B* i) `% RQuartus打开文件,到“工程目录\simulation\modelsim"下找到.vt文件,打开,
' R% \' S) X" c+ u( s
0 ^- l+ j1 h& s: w- g7 W8 j6 E
4 U9 ^6 b0 J) M% w& A! A, L) C2 k( g
按照参考文献⑤的语法规则编写Testbench,填写完成后内容如下
3 I  D! W8 A+ N4 J$ R
+ F- o4 _% }2 V) R: M$ z$ K
  • // Copyright (C) 1991-2013 Altera Corporation
  • // Your use of Altera Corporation's design tools, logic functions
  • // and other software and tools, and its AMPP partner logic
  • // functions, and any output files from any of the foregoing
  • // (including device programming or simulation files), and any
  • // associated documentation or information are expressly subject
  • // to the terms and conditions of the Altera Program License
  • // Subscription Agreement, Altera MegaCore Function License
  • // Agreement, or other applicable license agreement, including,
  • // without limitation, that your use is for the sole purpose of
  • // programming logic devices manufactured by Altera and sold by
  • // Altera or its authorized distributors.  Please refer to the
  • // applicable agreement for further details.
  • // *****************************************************************************
  • // This file contains a Verilog test bench template that is freely editable to
  • // suit user's needs .Comments are provided in each section to help the user
  • // fill out necessary details.
  • // *****************************************************************************
  • // Generated on "10/27/2018 18:41:50"
  • // Verilog Test Bench template for design : demo
  • //
  • // Simulation tool : ModelSim (Verilog)
  • //
  • `timescale 1 ps/ 1 ps
  • module demo_vlg_tst();
  • // constants
  • // general purpose registers
  • reg eachvec;
  • // test vector input registers
  • reg clk;
  • reg rst_n;
  • // wires
  • wire [3:0]  led;
  • parameter PERIOD = 20;
  • // assign statements (if any)
  • demo i1 (
  • // port map - connection between master ports and signals/registers
  •         .clk(clk),
  •         .led(led),
  •         .rst_n(rst_n)
  • );
  • initial
  • begin
  • // code that executes only once
  • // insert code here --> begin
  • #0 clk   = 1'b0;
  •    rst_n = 1'b0;
  • #5 rst_n = 1'b1;
  • // --> end
  • $display("Running testbench");
  • end
  • always  #(PERIOD/2)clk=~clk;
  • endmodule
      e: B( h  t" \
   
6 P0 r  c' q/ o0 L
3 u& Z9 S9 E1 \9 y也就是对模板进行下面的修改,并保存: c- u  d7 v8 X* V

  X+ V2 }# |- W0 ^7 b 5 ?# Z- S4 I6 z5 h  V* P
" g: T( l4 L! h, o, E$ M( J
复制*_vlg_test
% l* [# C; ?6 D2 B1 D
0 Z4 R6 Z" a+ c/ n' D4)回到Quartus->Assignments->Settings->Simulation
) C/ Z& W! @5 ]# x+ \6 h
: H5 ?) `; m6 w9 j) {2 C: I& X7 D$ Y ( w5 l4 U/ O7 ]- x% h
6 y8 U( R) c6 K6 R/ U9 d$ T& f
点击Test Benches-》New,Test bench name粘贴刚才复制的名字,Top level module in test bench自动填充雍阳的名字,勾选Use test bench to peRForm VHDL timing simulation,填写i1,File name选择"工程目录\simulation\modelsim"下的.vt文件,最后点击Add,OK关闭对话框,至此,设置完成!!下面开始仿真。
( O6 E0 F8 j  ]4 z; R
+ B, N, _% |6 t; o' U% |* ~ 2 l/ m3 P5 p5 j& @7 ~: {

% K; x, k: c  O+ e7 ^5 D! x1 `5)点击Tools -》Run Simulation tool-》RTL Simulation
3 ^& z) K% X- P& T: ?) @$ h
7 i# \& m2 N$ B5 E
. Q0 K: M* d4 G8 B1 K' i1 y5 `& @) g/ b$ `
漂亮的仿真界面出来啦~~~
0 M2 W1 m& m1 r; ?" y" A1 N
+ R9 ~, J; q$ O
' a3 q2 R6 ]# u
* C3 `+ j2 g6 ?1 j  a& bFPGA开发环境 QuartusII+ModelSim SE配置完成!这个过程中可能会出现以下问题
  F- \) r. a# D# d& {3 T) M& T
+ x9 M- ~7 P& F- T$ ]8 h①Error: Top-level design entity "simulate" is undefined+ z% l6 C& O, X+ f: i

. _" E' E. A6 Y2 n& @  {4 o" A  M) i按照参考文献⑥,将模块名和.v文件名改为一致即可。- h5 P! f0 i" g4 n2 ^
; f, n& S2 G/ {/ X, Q& X
# ?! |' a2 l, j7 E6 \1 Z8 ]3 }! a$ t
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-3 16:38 | 只看该作者
    关于FPGA 仿真及Hello World测试程序的详细步骤
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-8 03:31 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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