|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
详细步骤& E s5 y' [9 \6 w
( F4 ~2 l( K# R+ c( V% E9 S$ ~1 QuartusII 13.0.1安装&破解& w2 t& F C5 H7 Q7 s
' `# [& j- R; q% m) q0 \
1)按照参考文献⑧的步骤,到度盘链接:https://pan.baidu.com/s/1I_6-9f0wvEpF_utkTjjsUQ 密码:u6ef,将QuartusSetup-13.0.1.232还有破解器下载到电脑本地磁盘(cyclone好像不用下,QuartusSetup自带,如果实在需要再下载,反正我下载下来安装的时候提示我已经安装过了,无语。。。)。
: l) m8 [: N! Q3 C# H; J
9 Z1 I ~* b+ f V$ |- O2)双击QuartusSetup-13.0.1.232.exe,选择安装位置,一路next将Quartus安装到本地磁盘。最后,done!' p( l* p2 W$ e# Q2 _( V. w2 }; z' e
) S+ ^3 m, V, b& t+ h1 E; l! p
3)如果你的电脑是32位,将破解器中的“Quartus_13.0_x86破解器.exe”复制到 “你的安装路径\quartus\bin”目录下面,并且双击,将生成的"license"保存。' W' q; O) b% _1 y2 `. Q( {
: _% ?" z: \1 z
4)如果你的电脑是64位,将破解器中的“Quartus_13.0_x64破解器.exe”复制到 “你的安装路径\quartus\bin64”目录下面,双击,将生成的"license"保存。' t- b) b; k9 E1 G, T- l
& L1 M$ Q8 M( y- \. R6 N2 t4 i) f
5)选择对应版本,打开QuartusII,Tools->License Setup->(NIC)ID 选择第一个作为CID复制之,关闭Quartus。$ P# v1 T& S" `9 C% F
8 L4 z' z. \) \* I; p( S
k0 C1 Y: `& T T# {4 L2 r. j
! o# f7 ~' G. P, x S
6)打开之前保存的"licence.dat",将(NIC)ID替换掉里面的xxxxxxx,打开Quartus 定位到Tools->License Setup,License file选择刚刚修改的license.dat,出现以下界面说明破解完成
. y6 I d1 ]0 c$ G3 b: L% ? _
, o. [# X7 p$ C) l+ ]% Z9 z
! g) `8 Y5 [+ l& G7 w
: J6 J/ F$ v; P0 X9 p e
- g4 T$ ]! o; B* H+ s+ G3 o2 ModelSim SE 10.1a安装&破解$ f4 e k! p( E. P8 B! K: w
* ~& c: M) _$ I
ModelSim是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器,比Quartus自带的仿真器要强大很多,它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。目前有se、de、pe等多个版本,对应Altera和Xilinx还有对应的OEM版本,所有的版本功能最强速度最快的就是se,反正也是要破解,自然就装最强的版本了,和Altera网站上的modelsim的区别在于,se的版本我们需要自己编译对应的库,所以Altera和Xilinx的都是自带对应的库无需编译的,像我这样同时装了Quartus II和ISE的,自然还是自己编译方便一点。
, d, x6 u! }* u
; |2 G' Y0 W4 _) P) ]/ `5 W1)按照参考文献⑦,将modelsim se 10.1c emouse.rar下载到本地,解压之。
7 M6 l9 @# h, @ w+ a J# N+ d
) R* J1 z3 ]8 V' N9 F7 }2)双击modelsim-win32-10.1a-se.exe选择安装路径,安装之,最后弹出一个对话框,点击“NO”即可。
: g$ ~( |6 T$ m* Y5 \/ y$ b- y3 x. e0 f! K! q/ T' ^
3)将mentorKG.exe和crack.bat文件复制到安装根目录win32目录下,运行crack.bat文件,生成txt文件后另存为LICENSE.TXT
0 c* C' _6 T1 X5 u1 b6 W1 C$ C' e% S0 d3 r
4)我的电脑右键->属性->高级->环境变量,新增系统环境变量LM_LICENSE_FILE,值为LICENSE.TXT的路径,如:D:\modeltech_10.1a\LICENSE.TXT* k3 D& q8 D2 b, v+ o
9 W" ~" q; \1 l$ u% _5)运行Modelsim
: T" P/ Q; F4 v* K/ f7 `/ I8 q$ L6 W7 V
- l4 ^8 l6 M' f+ G; Q& w) g
. W5 V( K5 u1 q( p
# _& `# I$ H+ R9 ]! V% ?2 H" c" [1 R1 W3 编写测试程序
+ _0 a! J0 L1 t3 n2 \
& w1 n' V* y. r" G2 e按照参考文献①) z4 n" e; Q8 y+ p7 j' [$ V
9 p4 M m$ z# E; |# I' |% d2 f
第一步:新建工程7 J8 v' R, Y1 ~
File --> New Project Wizard...
3 N' ^2 q. ]' h) G1 m. V; c" [1 X# X3 T0 k2 K2 @& e7 P
; g" [- C' F1 y2 `: F U) b9 n. @6 _" Y; u* M! c4 Y
1.选择工程目录,指定工程名及设计入口,一般情况下建议工程目录,工程名称及设计入口同名,不能有中文路径; @5 `& I) i6 ^5 w s
2.添加已有文件,如果新建的工程,则直接跳过;
, W' D. g# T6 S% O/ Y/ \. q+ `3.器件选择,需要与实际用到的器件相同,Family选择Cyclone IV E,Available device这里选择EP4CE6F17C8;5 o( D6 \" l7 O D, h) ~
4.设置工具,一般直接next跳过;% d: y" X+ d' f
5.信息确认,如果无误则点击Finish完成;+ Q: H# t4 L' o' U
4 D- T( G' ], k1 W3 m
0 h# `- h! ?' u4 l. i
, U3 h0 `/ X+ |: |) Y修改默认配置:
) R9 K; g5 X5 r. B8 {5 OAssignments --> Device...( {, f# j0 G8 V- U' @5 G
--> Device and Pin Option...
3 I v' g% `1 @, j, M/ k1 Z5 t; \" A% _( @/ a
# d6 C5 u r4 F
0 B! Z9 O5 O/ d- B0 b' M: t
Unused Pins:未用到引脚选择,As input tri-stated;; I9 ~- H* |/ B) H! C3 Y5 a" a
Valtage 引脚默认电压值,选择 3.3-V LVTTL;! `$ ~8 l! G. q
) T+ S; c _7 @' i" w4 B/ k- c
6 m" T# o* g1 s* y3 u9 H7 t3 g
+ ~( G. B k! U+ b. w q4 B第二步:建立HDL文件
. w0 z3 f- c$ sFile--> New...
6 E' I4 ~* P+ D0 y- \' S1 UDesign Files --> Verilog HDL File内容如下:9 _9 {- [- V3 j( x0 J5 U
; o0 e5 A9 {( E2 v$ N. l" U1 r
1 q1 q7 A; s0 K3 i% s* @ ]
, N% Z* P' |# ~/ f
$ w( ~4 M) G. z4 t+ p0 T- /*
- * 功能描述:流水灯演示
- */
- 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+ w& m& o
. ?) r7 S( e! B4 ?9 j% p
保存文件,名称与之前设置的入口文件相同;(不然会出现报错①)
1 v" b; ^3 w+ E4 c3 z; s# l w* A M, m
第三步:综合
) F) B# j: k+ _+ C点击Analysis & Synthesis进行综合;& U- g5 ?8 j/ m' p/ ^' f
! \) t# I: c5 r: x& O" e% Q
' G+ \' A d* x+ A
/ V5 U) L4 }" Z9 q. [7 q9 T. g) A; O成功+ ~9 q! u8 _) t: e% ~$ M
$ q o! y- U/ B
8 Q/ ~: K5 a$ q9 l4 T
. P" W+ W" \7 c7 n; s+ N" L第四步:引脚分配2 G1 D0 L2 T4 d" m
Assignments --> Pins Planner打开引脚分配页面进行分配;, J8 f. Z8 `7 ?. D$ u( u3 ?
& `/ w5 J' V4 L; e, L
, w; {% I* ]6 M4 D( E, [$ L2 V2 N' G/ [" D+ K y# `0 N
双击引脚对应的Location,弹出引脚选择下拉列表
( V0 Q0 X% s2 K n; b p
* E6 X. w0 N4 R# c1 h4 H q" d, x7 R
$ ^% g' N; i# [ M- C/ e8 p- W# ]+ d% T* `
; {: P5 j$ b8 K8 ]9 O" F按照原理图上分配对应的引脚:
3 H2 q9 M3 }- }3 V( o7 PCLK --> E1* I% r* P( t, e0 l( F
LED0 --> E10% L7 s' D1 _3 K3 g" m7 Y& \
LED1 --> F9
' |7 N( ]( D; k( |9 x/ }; ]/ j+ GLED2 --> C9
$ ^$ [; F+ B! b; _" o* h' eLED3 --> D96 h! [. b+ w/ ~* W8 j& m3 ^
I/O Standard 根据实际电路选择电平标准,这里选择3.3-V LVTTL;
8 t9 |+ k! X' {+ {& \5 ^同一个Bank的引脚的电平标准必须相同;
# E+ T9 _/ M2 p. k& a. ?
1 F8 \. d6 j7 P) T; w
( w- l! [6 D: ]7 W
" D, E" c; ~ ^5 j/ G: R
) B8 \6 `1 P7 a& S7 }* w7 b注意事项: j, x+ W0 n- z* T* }+ e$ D
必须综合之后,才能进行引脚分配,否则系统并不知道你用了哪些引脚;2 n9 H! V( @" s4 V" s& [* }" `
+ o G. P1 m0 {$ {% S. {+ y
第五步:编译* C: i" J+ Y) r4 n- R+ w
双击Complile Design进行全编译;
- I6 X3 ]( @* J; Y% T
8 ], n [4 ^5 O1 x- [
. \4 m; C" y# i; U
4 O0 P% J- X8 f* ~1 P' T4 R- k或者点击2 y& @- I- _4 T0 x: c* Q" L
7 P0 l6 j$ c% l9 Z2 q: |" R$ ~ l
x# R8 e7 i2 b2 c2 I, D/ C8 }" O2 a1 v
第六步:下载测试
) n% [7 ~& L1 @( f. `3 D通过JTAG下载至RAM
i2 t* U8 G1 c1 n. Z! g0 H9 I点击Program Device打开编译器; ?) w) k% X6 u8 ]/ |
点击Add File...添加output_files目录下生成的sof文件;
0 j( b, Q. n, j8 [! Q3 c) _点击Start即可进行下载;1 e( o( P/ N. l5 v9 R' l9 W
下载完成后会自动运行,掉电后会丢失;
! \; Z" T5 H7 I) T( Y$ Z' j) n& N* U& ?: V, x5 F+ ?; ?
固化至配置芯片( `- d3 R" N1 t" c6 \ X4 E
文件转换:
/ A$ ^" H+ X1 s X. ?File --> Convert Programming Files...
0 i" b g+ H- ^: R8 W0 VProgramming file type: n5 [3 @' x$ U4 T3 k5 g0 R j
选择文件格式,指定为jic格式,JTAG Indirect Configuration File(.jic)( h# B0 s- I% `0 U6 E
Configuration device:
. z1 ]! x( B- Q! S$ T i$ s选择配置芯片型号,与目标板上的型号一致(EPCS16)/ U5 ]3 C c1 Q) f" a
Flash Loader:与目标板上FPGA的类别一致;
5 f9 v& y4 a2 G1 L) dSof Data:选择编译好的sof文件;
& \$ D3 }4 M9 ^; ~0 E4 v点击Generate生成jic目标文件;4 z$ b0 a5 m6 x" n
(此时可选择Save Conversion Setup... 保本配置参数,以便下次调入)4 k | B1 [9 ~% S' Q& m- F
下载固化:* V- I$ V9 v# ~6 x
点击Program Device打开编译器;
! E a9 z1 |, p7 a点击Add File...添加output_files目录下生成的jic文件;3 E; ~ g: z$ K, \1 Z( |( c
点击Start即可进行下载;# N( {( q" J: c' n) d
下载完成后,不会自动运行,需要重上电才能正常运行;1 {+ ?- P5 w3 |
3 r. ]6 R8 I5 K% f/ [注意事项:" Z4 ` u5 T4 }( e0 t9 c9 e. p
一般只有在完成调试完成后,交付测试时才需要固化,而在调试过程中,则没必要进行固化下载;( V2 U* \) j( V1 t0 G" j# U
. l. m2 {6 N- N9 U4 R
' s- [! m# l9 }5 ^( c$ Q2 G. U) A/ M
+ e( q' t) n. q# U0 o/ K
4 Modelsim联合仿真
6 W0 C2 y7 I! \6 g
. y( t1 U0 a) i/ M. s+ F* O1)按照参考文献②,第一次用modelsim+quartus的时候需要在quartus中设置modelsim的路径,quartus->tools->options->general->EDA tool options ,在右边选择modelsim的安装路径\win32,如下图:: V! v" s4 G& V9 z9 I
9 {+ a2 P k+ V$ l" g# d3 n3 K8 `
0 B! m% T8 G3 ?6 f. C% o
! d/ K2 t( A. w4 x) a: e
* w, v' |+ ~$ l( `' H* K
" I/ d5 [- @" ^, ^! }2)点击Quartus->Assignments->Settings6 g$ S& s. v6 N) W$ ]
3 t& `" T& h* U& J; {3 k* v! z9 T" i& S
) }/ b, E" ?! p4 d) C6 B* o8 w
0 k! o" h- D. R" l
) r X9 A; [7 M, B8 q0 v" R1 w选择Simulation->Tool name选择ModelSim
6 g' \! \1 ~) |& \* z
( F9 J/ A1 y; R6 s+ {
9 Q( g% r! K5 ^! t( g; M
( Y3 c; `% h- w1 s& Q8 f先选择TestBenche None,点击OK
. e8 Q; u3 C1 G( Q7 w' t2 m5 r, R' T1 F' k1 [0 }7 C
* K/ ?* u4 L* X: I& r2 I9 C% V7 s- w; U8 M5 h, ~/ z, S% b
3)建立TestBench模板+ K u5 e, k5 A( I; Z1 a% o
4 r9 {. }2 v0 I我们可以通过Quartus自动生成一个Testbench的模板,选择Processing -> Start -> Start Test Bench Template Writer,等待完成后打开刚才生成的Testbench,默认是保存在simulation\modelsim文件夹下的.vt格式文件
' R7 h, v9 Z. p O5 V3 \/ R) ~0 C- B0 l
5 y5 u% o' q% p/ d' Z4 j4 c
4 g: R8 g# I6 X, n
Quartus打开文件,到“工程目录\simulation\modelsim"下找到.vt文件,打开,
; Y# w3 ?, k: f3 v$ C* ^' B( Y$ N3 I$ ^
- U! }% C3 \) ^$ m0 l$ C
: y( \& N9 s: { t, V
按照参考文献⑤的语法规则编写Testbench,填写完成后内容如下. ?) l2 @3 n+ L _% A3 g
: g( l6 J5 m, o( X0 t: r
- // 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( B0 R7 k8 l- ^& X. v
/ i$ ^7 q p& O8 w
: G2 C. w6 Z+ ~
也就是对模板进行下面的修改,并保存0 O% j$ ?8 P0 Q
" o# W- F* c2 @6 X8 w2 D
6 Y* q+ m- r1 `% a) T* M
. ?3 }8 m* x/ R" A% k0 m0 C0 h2 l
复制*_vlg_test
. h3 [# a$ r4 C# m- M4 H3 Q! x& @0 r2 ?3 J3 W" P2 |/ `2 A
4)回到Quartus->Assignments->Settings->Simulation
$ J; @- n7 L, z* b$ f4 |: c3 b; W R! X% g2 t
$ w3 U& b( D E D: e
9 ~9 H. c# H3 Y A2 f% P2 N3 a点击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关闭对话框,至此,设置完成!!下面开始仿真。. U+ B, P1 \0 ]
' H$ Y! C2 K# x5 R: n8 x, ~ s% x. Q
) }5 C- e% r1 t- R% a: [! D
* U7 [# b; q+ {0 T5)点击Tools -》Run Simulation tool-》RTL Simulation5 A* d: Y* j" q4 \( V
0 f* _0 f4 y4 f, F# w! ]7 K
3 {# \" C2 D# s
% x o" Y. N! m3 i
漂亮的仿真界面出来啦~~~5 @- L; x1 |) N+ [6 | R: m
& L, a1 g U! v0 P8 Y0 k6 j
+ }* j0 C1 X+ E' D" |- i/ w
$ `: X% @+ N) g( tFPGA开发环境 QuartusII+ModelSim SE配置完成!这个过程中可能会出现以下问题/ c- y8 c8 O; ~ i' t0 u
0 ]7 _: ]% c& f- _2 e6 I& L' q①Error: Top-level design entity "simulate" is undefined
0 [+ @* X$ m$ {' w* \% t: m' T1 d) \ }" }9 |" q# j
按照参考文献⑥,将模块名和.v文件名改为一致即可。
5 U$ ~4 L& P J0 w# V) H) O
) ^+ z. Y8 q, {$ `9 E& N5 n" q a& f( i* q
|
|