|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
详细步骤2 O5 i/ s& p1 N) s/ p& W2 T' _2 B7 S
, r$ j6 H# i; Z7 \8 l# A& ^3 t+ g
1 QuartusII 13.0.1安装&破解
5 y) ]5 `: a; w! k: Q5 b
. F5 ~5 a u& k; l6 p1 ?+ [1 S1)按照参考文献⑧的步骤,到度盘链接:https://pan.baidu.com/s/1I_6-9f0wvEpF_utkTjjsUQ 密码:u6ef,将QuartusSetup-13.0.1.232还有破解器下载到电脑本地磁盘(cyclone好像不用下,QuartusSetup自带,如果实在需要再下载,反正我下载下来安装的时候提示我已经安装过了,无语。。。)。6 K/ y( m4 X8 l5 R
) n2 R2 d9 y! M* v9 v2)双击QuartusSetup-13.0.1.232.exe,选择安装位置,一路next将Quartus安装到本地磁盘。最后,done!
+ G0 z0 _9 |& Z# u* E
0 r# M6 o- P5 J3)如果你的电脑是32位,将破解器中的“Quartus_13.0_x86破解器.exe”复制到 “你的安装路径\quartus\bin”目录下面,并且双击,将生成的"license"保存。# O S# v, ~" |$ W0 J7 g
; n& Q8 M6 K/ Y
4)如果你的电脑是64位,将破解器中的“Quartus_13.0_x64破解器.exe”复制到 “你的安装路径\quartus\bin64”目录下面,双击,将生成的"license"保存。
( r6 U6 U4 x, N" {: m, ?1 a6 M
+ F# Z3 P- x0 U& C& ^8 [$ Z5)选择对应版本,打开QuartusII,Tools->License Setup->(NIC)ID 选择第一个作为CID复制之,关闭Quartus。0 g3 f" ?7 e6 g
6 l5 I) A9 [2 T0 F7 ]
) f8 L& O: p. l' {. j% s4 i
* w0 \8 U9 ~; T4 l
6)打开之前保存的"licence.dat",将(NIC)ID替换掉里面的xxxxxxx,打开Quartus 定位到Tools->License Setup,License file选择刚刚修改的license.dat,出现以下界面说明破解完成 ?( G1 D- [4 q# S2 ^! O( x
3 q" L5 D- i& F# [
& x& l4 p+ u7 S3 |, E; D* w4 E5 B! L' A: ?: z
e' L: O9 s# d. q* k2 ModelSim SE 10.1a安装&破解8 r. k/ A: R' i# |, A' C5 z
L+ r& l+ n: S% Y/ ~5 _% `
ModelSim是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器,比Quartus自带的仿真器要强大很多,它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。目前有se、de、pe等多个版本,对应Altera和Xilinx还有对应的OEM版本,所有的版本功能最强速度最快的就是se,反正也是要破解,自然就装最强的版本了,和Altera网站上的modelsim的区别在于,se的版本我们需要自己编译对应的库,所以Altera和Xilinx的都是自带对应的库无需编译的,像我这样同时装了Quartus II和ISE的,自然还是自己编译方便一点。# g2 P: n+ D: }( q0 Z
& X/ V6 r! f1 o5 I! S
1)按照参考文献⑦,将modelsim se 10.1c emouse.rar下载到本地,解压之。
5 S; x9 }& p- b4 Z* ~8 \% G: e
% P/ Y( s2 W" f2)双击modelsim-win32-10.1a-se.exe选择安装路径,安装之,最后弹出一个对话框,点击“NO”即可。7 O! I; y( t2 ^! s6 Y, ]
2 V" c& e! G. }/ f/ E/ O4 P' o3)将mentorKG.exe和crack.bat文件复制到安装根目录win32目录下,运行crack.bat文件,生成txt文件后另存为LICENSE.TXT m) E! O& Z6 S" R" |
5 N/ V: l$ Z Z: t4)我的电脑右键->属性->高级->环境变量,新增系统环境变量LM_LICENSE_FILE,值为LICENSE.TXT的路径,如:D:\modeltech_10.1a\LICENSE.TXT
( {" s% G6 q6 y" G
/ X) H* f0 s! u+ ^; B# ~! p7 S5)运行Modelsim1 S! @% y$ G8 Z/ w% @
- t# X. u( ^# g5 _* @4 |- F9 l* L- p
7 g1 g: a0 s1 S1 \
. [" y& ^) k, C9 k6 F# _0 N+ {
& ^% c% C0 L. {% F. L g- _ C
3 编写测试程序* v. O! F- O* _+ a4 f
1 `4 B$ J/ q8 E1 p4 X按照参考文献①" R& v) v5 k9 u
7 I0 \9 a( o2 ~1 l
第一步:新建工程' l& D1 [% b) P
File --> New Project Wizard...
}% ?# r7 _" P! t
/ s$ {1 M* y, T
2 E$ M5 C! W0 I2 O2 d
2 b) B5 A' @2 k& L1.选择工程目录,指定工程名及设计入口,一般情况下建议工程目录,工程名称及设计入口同名,不能有中文路径;
R, L- I# C$ S, m$ \" x$ \, a2.添加已有文件,如果新建的工程,则直接跳过;
( F' P" ~1 z2 y3.器件选择,需要与实际用到的器件相同,Family选择Cyclone IV E,Available device这里选择EP4CE6F17C8;
' e4 {- M/ V4 B! t6 y4 A3 ]4.设置工具,一般直接next跳过;, C/ I7 U* v L. }! B E1 E
5.信息确认,如果无误则点击Finish完成;
* U# O _2 I- h. k9 ]3 X: n0 o( S; O5 I X+ ]* E# u! q0 A
, U- f7 ^4 }2 R7 I9 n6 y: e
( h [$ A3 W* n- v: s修改默认配置:! C: m3 G0 S' T5 V w. S5 O
Assignments --> Device...
2 F* M3 E, t4 H1 l% H--> Device and Pin Option...) y+ ?0 {2 c& R# h- }: h. |
( x" D* U4 p' P: u3 y
6 h4 u; B5 D+ P5 |6 R2 P& o! q
5 o ]8 a5 \; G
Unused Pins:未用到引脚选择,As input tri-stated;
' _1 h$ B6 f7 hValtage 引脚默认电压值,选择 3.3-V LVTTL;
& Y2 W+ L z1 a& V8 y1 J+ |
w% t; d. I2 I. P" }9 P1 z
2 M* ^# M! ~7 e
8 f5 H0 G$ o/ p( X" B+ g第二步:建立HDL文件
! T- U. W# V) X+ s QFile--> New...& B" ~/ G$ v8 l0 N& L4 E8 y
Design Files --> Verilog HDL File内容如下:; ?8 P- x$ P$ _. |$ X7 ?& c
# i \8 t6 J% J3 v7 u- Z) Z! P
0 `; k6 C2 j4 R- y- s' Y* g5 A) Y. c
8 l9 O' e4 S7 n
$ ~" j# q2 }8 L
- /*
- * 功能描述:流水灯演示
- */
- 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# p( t, Z! |; D) B$ m- b7 G" j* l
2 m( N; c! a" T$ C: ]: ?. t& K保存文件,名称与之前设置的入口文件相同;(不然会出现报错①)
) _5 [/ J& B1 z+ F" D
! F1 ]/ V/ s) {6 \( d1 U; Z第三步:综合3 @/ z) `- @ ^0 `4 h
点击Analysis & Synthesis进行综合;( F& E+ [4 h% Z5 `# g' h
" o1 n( ]+ g+ E' S* n+ Z5 A
2 f! k: P* M8 W% Y' g$ h6 K( @8 ?
, A' y; X: y2 e' H6 T/ x C7 Q. @成功
3 B3 C( p# d- L6 t- O& ?6 r" p: @- b6 y
( a9 e5 |9 l8 H+ L4 Y% B' G2 c1 K/ }( a" C% y
第四步:引脚分配
5 _2 e; [( n' f* N9 XAssignments --> Pins Planner打开引脚分配页面进行分配;
) |9 E5 Z. n1 A I
1 b+ Y$ s: ]/ a& O2 V n
2 \+ n- R& V' H6 f! P' v# g1 H+ \( Y) s, c1 |
双击引脚对应的Location,弹出引脚选择下拉列表5 N/ o- Q' \! r0 ~+ b! C, R
7 G' a w3 M9 m) }6 @- q" F
2 e/ ~/ I, N% q4 H+ A* y
* X; z N' K" Q9 j8 J) r2 {
' K k& W* y( P- ^6 `$ t' r; W9 ^
按照原理图上分配对应的引脚:3 S- {2 B0 I# w% R1 H# G8 J6 B
CLK --> E1
+ I" A' N; T" K( r M8 jLED0 --> E10
8 o# i7 R" T( U( y/ uLED1 --> F9
& J8 ^. q: S z# U3 E3 k7 u: BLED2 --> C9
3 Z* |* O9 Z5 lLED3 --> D9! p( F: y1 p4 l w/ o' |* [
I/O Standard 根据实际电路选择电平标准,这里选择3.3-V LVTTL;, v- B; l- |- g
同一个Bank的引脚的电平标准必须相同;
2 X( b% k: d! L/ T. h0 c( c" w G5 J! ~% ^3 T
% W1 G9 Y* W/ a: ~, c+ Y; z- u
: E5 ]2 @" R8 W2 @ z- U3 |5 D v& t8 h# e$ J1 f
注意事项:: H# m) M# o" N7 J# C
必须综合之后,才能进行引脚分配,否则系统并不知道你用了哪些引脚;$ R% O1 D0 i5 T/ b
. O& ]1 g) ^0 d& G& G1 @第五步:编译
h6 L2 p6 X7 o3 c" X2 Q双击Complile Design进行全编译;
I5 j7 R2 V/ \' e+ Z5 ~& f3 R
, ^* ~+ I1 q# I g9 m0 x
# M3 o3 t; u1 e) J3 {3 x" `
7 }% d9 h0 v8 v& H& Q# \
或者点击
( i1 U3 v* [* _5 u! Q- U- o2 u$ `
" C |# K1 L* Q/ p7 S: l7 F6 s
c0 N5 ~9 w+ T6 Q' e1 i
* }; j' n8 m- k( c% K9 b6 P$ Z第六步:下载测试/ G, X. F/ _5 }* Y! E7 h; [ d
通过JTAG下载至RAM
0 K4 h/ p6 l( H; N点击Program Device打开编译器;
0 m$ Y- [% X1 v7 d2 ]: O点击Add File...添加output_files目录下生成的sof文件; a6 {- t) u! ` s1 a
点击Start即可进行下载;5 ^6 M4 c" G5 r
下载完成后会自动运行,掉电后会丢失; z4 [( p4 F1 a# M9 k. A& ^5 [* Z
e" J7 t. r# N) `) |6 ^, ^4 ^- S
固化至配置芯片2 f/ c1 G& I# A) B* j4 l8 `, w
文件转换:
8 g e1 {& y$ K" n: MFile --> Convert Programming Files...
6 o. K* [$ x1 aProgramming file type:# V3 F+ ~: o: s! c2 ~: I! G
选择文件格式,指定为jic格式,JTAG Indirect Configuration File(.jic)
1 G7 M4 L' K( I1 m- x# x# S: RConfiguration device:
6 v7 A: n; e6 d4 m选择配置芯片型号,与目标板上的型号一致(EPCS16)) C0 d* P4 V- Q2 k$ }" v
Flash Loader:与目标板上FPGA的类别一致;
0 V9 Z+ U8 r7 s$ t2 rSof Data:选择编译好的sof文件;
# i% H0 Y9 H* |点击Generate生成jic目标文件; ]1 u+ b& m. {. }# D4 Y5 l
(此时可选择Save Conversion Setup... 保本配置参数,以便下次调入)
! J- b0 }4 \: H6 l下载固化:- @ G$ l. O* e, T3 C5 a
点击Program Device打开编译器;
; d3 v/ J6 D* P/ v) ]1 y点击Add File...添加output_files目录下生成的jic文件;
# o3 W9 B( }0 p- a9 j. h$ c3 S点击Start即可进行下载; y1 z: p, T- }; `
下载完成后,不会自动运行,需要重上电才能正常运行;
, y+ c2 i1 t% t$ h1 ^9 P& o3 ~6 H) X
注意事项:
& |# G6 b$ j6 }8 w8 i7 s1 H8 B一般只有在完成调试完成后,交付测试时才需要固化,而在调试过程中,则没必要进行固化下载;" s+ \: O: b4 o
0 q+ w& I' S, h8 K3 c# O
/ J( u4 i/ I, r9 U: Z$ ^
/ i: T: W0 `! |" A0 ~4 Modelsim联合仿真( S: H. ^. m& V4 v
6 M& h; M6 L) D3 i; J- h1)按照参考文献②,第一次用modelsim+quartus的时候需要在quartus中设置modelsim的路径,quartus->tools->options->general->EDA tool options ,在右边选择modelsim的安装路径\win32,如下图:- u) h) I' _- @! r
. S6 M& S Q5 W- | ?1 Q8 y
0 r2 ~' _$ T) u- ], A d
, `+ X7 Y$ x% l4 P1 u
( X% @# N* D' N, _0 V, O
9 I+ s; l: `9 e4 k; s2)点击Quartus->Assignments->Settings
, k& M. V& t+ K. f8 J$ D$ T$ H& ?& r1 W8 @- h" F8 X! ~% }. x a
% U" L2 h5 \" Y( r- l1 X$ }1 x' Q
- w3 C. p U3 v' ~
- \4 n# z0 `! b
选择Simulation->Tool name选择ModelSim$ A6 u% Q7 `- c$ Z* N: i* ?
7 O4 P/ r- `: D* V( R
: U% U' [6 v+ e% U6 d
+ H( o7 C7 z( w% ^' m& T B先选择TestBenche None,点击OK2 u" r$ H( a3 E- O
! g7 u6 {/ r9 F0 z7 o
8 i- ^9 i9 l# C" v7 E: x/ z
0 I" l5 B6 Y7 W3)建立TestBench模板" P+ n$ x" V: P' Y; P- `
% i/ u, d i) i8 e; t# J
我们可以通过Quartus自动生成一个Testbench的模板,选择Processing -> Start -> Start Test Bench Template Writer,等待完成后打开刚才生成的Testbench,默认是保存在simulation\modelsim文件夹下的.vt格式文件
8 g+ Q, g y J$ |. m/ ]4 p' [2 y+ B4 ^! F, C. c2 \1 V
) `2 b- [1 [) p2 Z" c
4 |: ]" _; r9 U6 iQuartus打开文件,到“工程目录\simulation\modelsim"下找到.vt文件,打开,
) ]+ `2 W: t* a9 ]* X, u* r& W/ q2 O/ ~
& a0 ~# s6 J+ d7 t n# O/ d8 S: h9 N
按照参考文献⑤的语法规则编写Testbench,填写完成后内容如下
5 |4 U6 `* q, |! U! g& W6 d3 R
) C' Q/ u, O$ E- // 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+ O, g7 d' F7 \% c5 g$ u( e
& w0 Y1 \7 M1 O8 x) H
. T+ M- c2 f) c0 f% h' H, X也就是对模板进行下面的修改,并保存/ o* J7 Z, u/ r, e
' a/ m1 `% k- K }* Z
& z: M0 R& `% ]! c( m2 s
, |, Q2 _- d u+ r6 ^6 v- u复制*_vlg_test
I1 Y2 ~" `- r" T* i3 j' b9 Q: H0 R0 z2 ?7 Z# F
4)回到Quartus->Assignments->Settings->Simulation
& [4 C0 }, {9 o- \# M$ A' ]! `* [" L* u5 i
/ O& { H% ^. Z5 l+ _% x- i s5 t
点击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关闭对话框,至此,设置完成!!下面开始仿真。
# O# H* `6 A' F" m3 c/ }6 `
9 C; N& r8 T3 U, Z3 o/ c+ r" J/ D
1 I- y% p# _2 K* C4 N
; |% ?0 C) q8 z4 e5)点击Tools -》Run Simulation tool-》RTL Simulation
/ K' i1 z9 d/ X. ?, x
) [) M+ o/ Q1 J9 M4 z
) u2 M6 v+ I5 G# A7 f" Q
3 g+ p1 i" c7 @
漂亮的仿真界面出来啦~~~- m, o" o y8 Z w
+ _4 [. l% m( {1 l8 D2 w6 t6 v" i
0 _% X$ r, ]4 x; l" O! l2 N# B5 p
" b4 q) e" R' a% cFPGA开发环境 QuartusII+ModelSim SE配置完成!这个过程中可能会出现以下问题8 `3 W" I9 y9 S( b' O6 ?
- E+ V& h- f0 _* I M5 s1 t% l①Error: Top-level design entity "simulate" is undefined& }$ i& X( b3 x4 P& T
" n% H3 i) ?: X1 n按照参考文献⑥,将模块名和.v文件名改为一致即可。4 }6 Q4 o% C3 J) Y7 J) p* K3 u
7 H; c- }! L/ B' j
* Y0 {% j& w- `1 F$ E3 E |
|