|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
详细步骤
# a; s ~1 X& b, K7 Z& c
& k, L( M& m- b3 _8 A1 QuartusII 13.0.1安装&破解6 [9 N* t0 |. N5 g
2 u) c" ^: b. C5 n+ |; @1 x1)按照参考文献⑧的步骤,到度盘链接:https://pan.baidu.com/s/1I_6-9f0wvEpF_utkTjjsUQ 密码:u6ef,将QuartusSetup-13.0.1.232还有破解器下载到电脑本地磁盘(cyclone好像不用下,QuartusSetup自带,如果实在需要再下载,反正我下载下来安装的时候提示我已经安装过了,无语。。。)。$ D. s6 d+ J6 i
# g; H3 K) n6 f4 @2)双击QuartusSetup-13.0.1.232.exe,选择安装位置,一路next将Quartus安装到本地磁盘。最后,done!1 z" I; r/ _+ o3 T
* x$ H, N6 ~' y' F0 O2 Q# Q
3)如果你的电脑是32位,将破解器中的“Quartus_13.0_x86破解器.exe”复制到 “你的安装路径\quartus\bin”目录下面,并且双击,将生成的"license"保存。 k& H. m. b3 h" J( |0 t
- Z9 U$ U& i& Z5 j4)如果你的电脑是64位,将破解器中的“Quartus_13.0_x64破解器.exe”复制到 “你的安装路径\quartus\bin64”目录下面,双击,将生成的"license"保存。
9 |/ k* Z# t" u! a, ?5 A% D# s% i7 v- Z3 p9 u- W
5)选择对应版本,打开QuartusII,Tools->License Setup->(NIC)ID 选择第一个作为CID复制之,关闭Quartus。
C$ j8 G9 H4 |* c4 |+ o
9 g" M. k+ s; j* }( v. a; V
4 T2 @2 F; b, y/ ^$ E2 F3 Y' h- b+ y( v
6 L. {. R2 E" y# y9 w8 a7 |6)打开之前保存的"licence.dat",将(NIC)ID替换掉里面的xxxxxxx,打开Quartus 定位到Tools->License Setup,License file选择刚刚修改的license.dat,出现以下界面说明破解完成
6 z9 H5 I1 p# `# f4 z* j7 K6 E( Y c' {) Y" w' m& @% w4 N
' r4 Z/ m4 f3 v0 S) w
' }8 ] l" T# a+ ^
0 u" R8 s$ O7 [6 r1 p
2 ModelSim SE 10.1a安装&破解8 R5 _2 q2 s& b
" _8 h I$ W# q) l$ EModelSim是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器,比Quartus自带的仿真器要强大很多,它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。目前有se、de、pe等多个版本,对应Altera和Xilinx还有对应的OEM版本,所有的版本功能最强速度最快的就是se,反正也是要破解,自然就装最强的版本了,和Altera网站上的modelsim的区别在于,se的版本我们需要自己编译对应的库,所以Altera和Xilinx的都是自带对应的库无需编译的,像我这样同时装了Quartus II和ISE的,自然还是自己编译方便一点。
' q0 p7 N; q( P; ?9 |7 V3 u' \# y+ z C' b$ O/ l
1)按照参考文献⑦,将modelsim se 10.1c emouse.rar下载到本地,解压之。
) }+ i# x$ y$ d% x5 d& X) ^ {
; x" z7 Q8 t; O D3 e2)双击modelsim-win32-10.1a-se.exe选择安装路径,安装之,最后弹出一个对话框,点击“NO”即可。: H+ P) A. s; i" l
) q' T, a* T P; i3 ?- Q3)将mentorKG.exe和crack.bat文件复制到安装根目录win32目录下,运行crack.bat文件,生成txt文件后另存为LICENSE.TXT
! g) {7 A0 D% s. V" J: t% B Z& ?
: G$ \ ~! V3 _9 `! g4)我的电脑右键->属性->高级->环境变量,新增系统环境变量LM_LICENSE_FILE,值为LICENSE.TXT的路径,如:D:\modeltech_10.1a\LICENSE.TXT2 U: N1 q# D3 K3 X, M" S
/ }6 j4 A, Z" c J! n* Y6 \6 r5)运行Modelsim
, _5 D$ Q: i$ V9 k1 [- S4 g$ [2 O3 `1 \
" y! t9 D2 I6 ]$ }& g0 G+ G C
/ Y6 ^# ?5 y i8 l# p' @ E) R y( g
3 编写测试程序+ E& U7 ?2 ]' A2 {6 W* N
" H* l9 w" \$ r* y4 ^+ ?% y按照参考文献①
) c/ S s( J5 Z Z7 M
9 R+ R1 l2 k6 l0 V( Q第一步:新建工程
; M# P2 F8 ?. s) j' y: O9 ^8 ^( I7 r2 GFile --> New Project Wizard...6 I3 c1 V1 J! n% |
6 z" C0 N# v0 f
8 P9 t9 _3 k+ v) `9 O2 \
" n; |! Y# _8 C8 T
1.选择工程目录,指定工程名及设计入口,一般情况下建议工程目录,工程名称及设计入口同名,不能有中文路径;0 ^) [1 s) Y. k8 H, E( m
2.添加已有文件,如果新建的工程,则直接跳过;
9 d5 J- g$ u; l( A) s! M9 i3.器件选择,需要与实际用到的器件相同,Family选择Cyclone IV E,Available device这里选择EP4CE6F17C8;0 K% {8 F- O* e: f* p/ h$ q0 H
4.设置工具,一般直接next跳过;0 A) y' ~7 L- i- s( \: j5 ^! T O
5.信息确认,如果无误则点击Finish完成; S$ g$ w" X P5 g0 t) X) u2 c! }
6 `+ d2 F1 G+ Y' F) s; y; c
! e& B6 k, e6 u
. I' c5 c* ~4 s/ v1 X4 S修改默认配置:
" h; h9 L1 T( i/ m3 G# vAssignments --> Device...
9 R G3 z0 x! a4 E2 x5 }; U7 L--> Device and Pin Option...2 H9 c2 T, N# [7 } j+ C
; p* D2 @. W( w# w
3 z4 |% q, u/ m& g' z$ O- f9 _2 S+ M3 M
Unused Pins:未用到引脚选择,As input tri-stated;0 Q) S2 f0 g! ?9 V
Valtage 引脚默认电压值,选择 3.3-V LVTTL;; f- o, a& o. _& j2 g4 x
3 L! m% i! a6 A; u& j" l4 K; N
! m; A ?) _0 G6 Y+ Y2 H7 p0 K. [5 h$ y) N4 `
第二步:建立HDL文件8 W9 `7 {3 i0 k3 p [( T% @+ ^* O$ t+ U
File--> New...: ]' ` Y# N3 J, r+ ?! J
Design Files --> Verilog HDL File内容如下:
P% T9 D+ _/ o+ ] |6 D
, v% |6 x$ x' } M) `/ F* m; O' Q
1 u& I! c4 W& Z
% P0 L# L1 S8 a9 }4 m1 _- F/ e3 u" ]1 @
- /*
- * 功能描述:流水灯演示
- */
- 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
: v: g C* N0 \6 N. f- W
/ s! F, Q9 s. v( ]保存文件,名称与之前设置的入口文件相同;(不然会出现报错①); X( c; j/ G; o8 B3 [
2 c% g3 J! Y3 b3 P$ I
第三步:综合4 R$ b2 I/ S/ w& X4 o
点击Analysis & Synthesis进行综合;
0 g; g$ B8 C; E' F4 i5 T/ x' X0 z' t! I
+ e# s' Z: ]" a. [+ U* B
% |9 J; Q4 ~6 a6 A" |8 T成功
, d3 h5 v2 G. b
6 |+ e: L+ x4 ]
& G" y0 ]8 f, o: Z0 |: K( [2 c3 |( J7 Q" |4 ^
第四步:引脚分配
+ H! p9 B5 Y8 ~% X( @3 I5 h5 r5 j: S. _Assignments --> Pins Planner打开引脚分配页面进行分配;" ^9 T# x! `( ^, T8 C% J& R' ?7 _
7 q. s/ o: g. i+ Y v& P/ N
& Z y# ~/ F" i8 B4 @
" a- O4 n7 a7 F' S2 J# u双击引脚对应的Location,弹出引脚选择下拉列表
. D8 X8 T3 I" `; G
7 b9 I8 C3 y1 S# x
9 n: V, p# e- X/ H6 Y' i) A+ s9 D& d0 o$ `
" E* u5 y& @) p' Z9 q9 d+ H
按照原理图上分配对应的引脚:1 }1 B; z. I9 _: G" t
CLK --> E1$ F+ ~1 S9 Y/ S2 z, y* t/ p, K4 C# K
LED0 --> E10
1 }2 M( e. `" S% a$ CLED1 --> F9- P' P: {, N3 F1 G; u' y" Y
LED2 --> C9
5 _8 P+ x3 ]+ u& d4 z$ SLED3 --> D95 Y+ t& g) U Y$ v% m# M; G
I/O Standard 根据实际电路选择电平标准,这里选择3.3-V LVTTL;3 K5 w, U4 ?6 h. D2 D
同一个Bank的引脚的电平标准必须相同;4 w& T* w- b4 E( U$ R' C Y
( X: a! K& l4 O5 U" p
9 }* z! e& o# ]! M* q: v% D# G! {* G. H4 U+ _5 P
/ o8 N# Y: W# R% B0 z) a. O
注意事项:6 X: D" `% j: e3 o+ U3 I: J. e/ O$ h
必须综合之后,才能进行引脚分配,否则系统并不知道你用了哪些引脚;3 r8 j0 a4 \9 ~9 ]
6 N/ o& u) B4 ~! H7 U6 X' K
第五步:编译
M; y, F# Y2 z* c4 x双击Complile Design进行全编译;5 C+ G) y8 u+ {$ c- I: X. E" r
2 z/ {9 P" z, V( p$ y
- _6 N6 F( w/ q: a9 E2 V9 J, Q
c5 R; h+ ]+ }; Q0 a或者点击% n# V P3 N7 }6 b& @2 q: L
- ?8 P0 m$ d7 U) w! ]. u3 G
, h: R+ J8 x7 c$ a
( {" x- `# m, S/ e1 C5 m
第六步:下载测试" ^. R" v( {) ]
通过JTAG下载至RAM% a( @, ?2 M4 M6 Q3 w
点击Program Device打开编译器;
1 B+ `! F, g- X2 j点击Add File...添加output_files目录下生成的sof文件;! R/ r. d# g0 Y; m
点击Start即可进行下载;* j. y' ~' b+ |$ t) j$ b
下载完成后会自动运行,掉电后会丢失;
' y. G9 f+ ~) k0 t+ q' S& O9 ^% H4 Q6 E( |% A, z. |
固化至配置芯片
& y" D2 q+ i/ V. t& j3 U文件转换:
7 [5 ?) [4 X+ F" I8 X9 c8 c mFile --> Convert Programming Files..., ~; O5 ]' @4 z3 t8 p
Programming file type:5 j+ F% v( O5 {, S6 f+ f% x
选择文件格式,指定为jic格式,JTAG Indirect Configuration File(.jic)
% j9 E0 @: {$ T) l% {8 V+ ~" z0 x" yConfiguration device:
9 A2 z4 F2 ] n9 ^5 U% E4 M选择配置芯片型号,与目标板上的型号一致(EPCS16)
9 `6 E, h9 ]4 s4 U1 X7 UFlash Loader:与目标板上FPGA的类别一致;
2 f- i0 f2 i! a1 ^8 ESof Data:选择编译好的sof文件;0 J0 d1 F% ^# q: t; R8 K4 |
点击Generate生成jic目标文件;
2 C9 G, Z' v, t& a$ G" @' s(此时可选择Save Conversion Setup... 保本配置参数,以便下次调入)+ N* A% k T2 M3 \
下载固化:( n: H+ v |; R+ d. @0 r8 _4 v
点击Program Device打开编译器;9 W) ?! S( s4 l: X
点击Add File...添加output_files目录下生成的jic文件;
2 A$ p+ P: V$ i6 x7 h. J1 A6 O点击Start即可进行下载;
! u+ D/ C) a& f {; a' h: D0 f下载完成后,不会自动运行,需要重上电才能正常运行;2 [. L7 u |* H
, _& u, }( [) ]; j0 b9 h注意事项:
6 v0 q+ K+ }7 `3 u" b2 P一般只有在完成调试完成后,交付测试时才需要固化,而在调试过程中,则没必要进行固化下载;
; R d' Z: b2 t4 _5 I3 {- T# R% V, O _: \' W
4 R5 l; ?/ D6 h$ E2 Z
0 M% h" c% [% M c. ^4 v4 Modelsim联合仿真
+ F. P& m) l9 N; n2 J9 c' d/ r' O
4 E) V `0 H6 F0 `7 Q# `; ]1)按照参考文献②,第一次用modelsim+quartus的时候需要在quartus中设置modelsim的路径,quartus->tools->options->general->EDA tool options ,在右边选择modelsim的安装路径\win32,如下图: C& |$ h0 t3 d, j3 G4 z/ u2 B
+ d7 e/ p9 v8 G/ m
0 q6 ^5 T5 h$ {/ @2 ` u3 p5 U% `* P$ f) l
( Z; N# x7 D C g* `
7 [4 K# K/ D) T7 |2)点击Quartus->Assignments->Settings
. R, S/ `0 J* X- x
- U6 e" G* l$ a, E; x
. b1 Q+ K/ L8 G, D
" U0 ^, f4 e6 ?6 `2 y; `
) M# L) ~" X8 y2 A- ]选择Simulation->Tool name选择ModelSim
' }0 c7 g4 L9 I0 h: `9 H2 k9 y# }) l
5 f2 N/ g9 e6 E( N2 }
8 R1 r8 c+ l* Z/ p先选择TestBenche None,点击OK" p& m; }& F* {$ B+ x9 y" C
+ K' v/ V& B' g7 i$ W
0 {# {" K* d* E& Z6 b; W g; l# j
" c" {5 Q% n I9 ?3)建立TestBench模板
. n1 C; Y7 Z7 [& I8 y! ~ y( b9 ^7 F6 Q, i
我们可以通过Quartus自动生成一个Testbench的模板,选择Processing -> Start -> Start Test Bench Template Writer,等待完成后打开刚才生成的Testbench,默认是保存在simulation\modelsim文件夹下的.vt格式文件
+ u/ h7 r0 d6 ~2 ^0 }( g! Q T h# b! [5 M
3 A' l- [! ?! ? V& p/ `4 @% d8 f
% a6 y8 ?. d& y+ ?- M- {2 k
Quartus打开文件,到“工程目录\simulation\modelsim"下找到.vt文件,打开,+ L% c4 B& ?: q' S4 y4 s" S
- E/ j& \0 W s$ |$ o
8 s$ m6 J# A% e, c
; H5 ]% E: E. ~$ h3 e" D按照参考文献⑤的语法规则编写Testbench,填写完成后内容如下
9 {' C2 W5 l/ D! E
2 O/ M$ `8 f4 y- // 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* H [7 O: ]3 B9 c* ~- n
4 U6 ~% N* G% V7 }* ?! ]6 |
; ^; o' o6 ` j- O3 `/ p也就是对模板进行下面的修改,并保存' B% q6 f$ X8 r5 v
" v& p7 S. { [7 _+ Y3 \
/ \6 [; Q$ q8 Y8 S* V8 [, y, @
9 }! h |# X# j+ e
复制*_vlg_test
1 c1 q+ Y0 c1 o' W% Q& i4 y! _4 h( q0 Z( N( L
4)回到Quartus->Assignments->Settings->Simulation
7 ]1 P7 t/ ^0 f+ h% L- `8 j( ]9 [' g# ]" c2 q+ L
9 h: l8 g; p, [- Q( j( l t' H4 d2 M6 _5 P3 U5 P z
点击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关闭对话框,至此,设置完成!!下面开始仿真。
9 m( }- R7 C q0 B' k% z W% ^# U2 Y0 I6 L9 M* q; D# O5 C
3 L6 T# h5 `& j w5 J% \0 r9 @* ]
5)点击Tools -》Run Simulation tool-》RTL Simulation+ \% P! J0 b, O
" P* o6 X4 j* K( A* [! \0 @" G
1 k" c, V1 S2 g
" e1 N& ?- V# d. \) L6 c6 m7 }漂亮的仿真界面出来啦~~~6 d2 ~' J. h9 X Z0 `: |
# M# G, i2 Q/ z
6 x0 V6 E7 `1 L1 ]+ r, B; w
- \6 u! ^, q0 J$ c8 y7 G* v
FPGA开发环境 QuartusII+ModelSim SE配置完成!这个过程中可能会出现以下问题
# s+ ?- b i% G, f- T4 ^2 E8 G; B. s3 ^' t; W
①Error: Top-level design entity "simulate" is undefined
+ ]1 P3 u1 A0 R- _, N/ Z. v/ G9 V7 J* L
按照参考文献⑥,将模块名和.v文件名改为一致即可。
! [0 f9 N% ^' k+ m' ~5 w. b; u/ g" C7 _- S, E; l n( _( e5 `+ d
& N. V4 U7 s r" U! X' S& M1 t |
|