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

转——FPGA开发笔记

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-27 10:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
转——FPGA开发笔记

. P3 i* J. z( N! O6 }" R, A4 n) l
文章摘要:* H' e+ G1 P0 ^3 D
近日花巨资从某宝购置了一套FPGA开发板,拿到板子的第一件事肯定是先跑上大名鼎鼎的跑马灯例程,应当算是硬件开发中的HelloWorld了,本文要从新建工程到仿真下载验证,来说明FPGA的开发流程,本文的代码不重要,重点在于流程,流程,流程......* j  j; t2 l1 s  w

0 C- n/ F  `% M: B; r! J) s硬件平台: EP4CE6F17C8# u, f3 a6 N& N0 l, {7 b7 a0 h
开发环境: Quartus II 13.1
& S- w' ]- M6 ?8 M$ I# t) k! U0 h2 b: H  D: }  j
第一步:新建工程
* t3 R" j* p( y- OFile --> Open Project Wizard...
5 l2 h- h% f5 l' |- N1.选择工程目录,指定工程名及设计入口,一般情况下建议工程目录,工程名称及设计入口同名,不能有中文路径;
2 h$ A( M* l& r" N2 ?2.添加已有文件,如果新建的工程,则直接跳过;
% R+ N5 n& Q  V6 |+ n! O  l0 ?% p8 l+ A3.器件选择,需要与实际用到的器件相同,这里选择EP4CE6F17C8;
# h9 R$ d/ |' o4.设置工具,一般直接跳过;
' C% f& N- }  P1 H1 R  M5 |5.信息确认,如果无误则点击Finish完成;2 M, Q, `& t5 w. x% ^5 M& q$ j/ g6 a
修改默认配置:. ~. J) F; q4 j/ N
Assignments --> Device...3 o( K: F5 p9 y& F( w0 X! W7 w
--> Device and Pin Option...
4 b5 A+ {, a% qUnused Pins:未用到引脚选择,As input tri-stated;
) J3 |0 P# N7 M. K4 T# OValtage 引脚默认电压值,选择 3.3-V LVTTL;
8 X  m2 t! U; d  b# H, c! P/ d2 z/ A1 e& F
第二步:建立HDL文件4 p. i9 _; D! R% M
File--> New...
7 S( ?$ S+ y, o& v7 A; Y. GDesign Files --> Verilog HDL File! e7 W! [( F. Y
示例代码:. D! ~% ?: W- a& I' L
5 l9 J5 Y( p; N; _. R/ L
  • /*
  • * 功能描述:流水灯演示
  • */
  • module led_test (
  •     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& |$ Q5 _" q0 r4 a5 W* L
) [" n$ Z4 I; H  ]
保存文件,名称与之前设置的入口文件相同;' J$ D* ?) f1 E

4 O/ a% T$ p; \, z第三步:综合$ X# P$ z$ i. J4 a1 z
点击Analysis & Synthesis进行综合;
2 K5 l0 Q8 e* R9 g: ~* Y% \# \* ?: O/ c7 e  H; W  J
第四步:引脚分配
% O. c* n) v7 L- N! v$ r/ }Assignments --> Pins Planner打开引脚分配页面进行分配;2 h) z: w3 J' P( e# S  e  q
按照原理图上分配对应的引脚:
  W. ^4 [5 c* c5 h9 v$ eCLK   --> E10 R% B6 y: P( k2 W1 n! `0 W# N/ ?
LED0 --> E107 I: V! L3 c2 q5 F% |& }
LED1 --> F95 l: E3 C9 k$ f& I2 c& n" h
LED2 --> C97 X/ K- M- x" ~
LED3 --> D9. S5 S( ]$ ^0 N) c0 G8 k
I/O Standard 根据实际电路选择电平标准,这里选择3.3-V LVTTL;
: g  K, v) U$ g  s7 }同一个Bank的引脚的电平标准必须相同;9 G; w3 i0 s% Q5 F0 v
注意事项:6 A" A3 o  j+ u0 ?% c' P
必须综合之后,才能进行引脚分配,否则系统并不知道你用了哪些引脚;
, r2 a7 M: [. o& ]. i/ ^7 A6 c* F9 Z. o. ?8 p: f/ s
第五步:编译4 {* H& R! j$ r! m4 h
点击Complile Design进行全编译;8 [3 F7 F4 k& Z, s' E. A

3 Z" }" P! X( C" O! ~* r第六步:下载测试2 g* d$ F7 K7 {  v  }
通过JTAG下载至RAM& }* L8 c# Z( ~, a$ \+ }: O8 a
点击Program Device打开编译器;
$ ~9 x0 r7 O2 }5 [6 ~点击Add File...添加output_files目录下生成的sof文件;! ?) Q1 X5 K& k/ V- T2 L% o
点击Start即可进行下载;/ @- K( ~3 m. [9 t3 v' z3 P
下载完成后会自动运行,掉电后会丢失;0 q- b. [1 N# q- ^  p4 A! g

! ?9 u* I- t1 e. F3 s$ a固化至配置芯片
* V' N0 |% j, R+ [2 o1 X1 g: e文件转换:( D0 ]3 z7 S% }2 ^8 ~
File --> Convert Programming Files...# k" N1 x: V+ t3 D0 X
Programming file type:
" F; ?! L8 r2 }; x2 v! j0 d选择文件格式,指定为jic格式,JTAG Indirect Configuration File(.jic). {) W1 |& x( e) H
Configuration device:
8 R8 X: W, h- F3 [- B' {+ ~; m选择配置芯片型号,与目标板上的型号一致(EPCS16)
7 e4 e7 j; t( Y- o* h# p1 ^Flash Loader:与目标板上FPGA的类别一致;
$ L% H$ T1 L/ ]2 U- i+ O. NSof Data:选择编译好的sof文件;/ t, t( y6 V; ~% s0 ~1 e# C
点击Generate生成jic目标文件;
0 ^$ C- N" p0 a: s) V(此时可选择Save Conversion Setup... 保本配置参数,以便下次调入)
/ M$ \  i8 ~+ B4 B# L( k下载固化:
$ [# @3 F; m3 X) V4 i6 n. i$ n7 |点击Program Device打开编译器;3 V% t% b0 j# \9 {7 Y
点击Add File...添加output_files目录下生成的jic文件;, t7 i; R5 @6 D- P5 K: K/ N
点击Start即可进行下载;
6 ~! c, `( E+ n: d: ~8 p: Y下载完成后,不会自动运行,需要重上电才能正常运行;
( h' A+ B. I' v% H+ C& w! u% Q, S3 ]4 J" v* H9 U" H6 }; w
注意事项:
" C; S# ^2 r, r, O0 _- q+ q, v/ r一般只有在完成调试完成后,交付测试时才需要固化,而在调试过程中,则没必要进行固化下载;6 g: |0 T3 n0 w, S" [: i
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 16:20 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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