|
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
|
|