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

转——FPGA开发笔记

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
转——FPGA开发笔记

1 L7 U: _6 [9 k  R3 m( D) Y, j# b0 ?) o  I2 S9 L
文章摘要:
- u- E4 Q+ j( b8 m/ P近日花巨资从某宝购置了一套FPGA开发板,拿到板子的第一件事肯定是先跑上大名鼎鼎的跑马灯例程,应当算是硬件开发中的HelloWorld了,本文要从新建工程到仿真下载验证,来说明FPGA的开发流程,本文的代码不重要,重点在于流程,流程,流程......
, H7 h- `/ T' |# U) |: b3 C( n
( m1 S) R  t# a+ c) v3 n+ `硬件平台: EP4CE6F17C8
5 \' L9 [0 G% l# t+ Y5 L$ u开发环境: Quartus II 13.1
# J/ Q: v) @5 ~" J
( H' M; v8 J- f* i- Y: l9 W第一步:新建工程6 b% p" s# y9 H2 u/ e  f& K, D
File --> Open Project Wizard...2 o& b& q# Q. C$ u8 z" L  k
1.选择工程目录,指定工程名及设计入口,一般情况下建议工程目录,工程名称及设计入口同名,不能有中文路径;+ ^5 I% h% _, y( {% ~8 X
2.添加已有文件,如果新建的工程,则直接跳过;
) t6 c4 \5 ]$ ^3.器件选择,需要与实际用到的器件相同,这里选择EP4CE6F17C8;8 C( o# x  }; o' z1 _+ F
4.设置工具,一般直接跳过;1 A: c1 Z! [! x4 e
5.信息确认,如果无误则点击Finish完成;
9 m4 T+ P. p1 p6 v/ U! ?% h3 K' k修改默认配置:
7 i" j4 Q8 d9 b5 @2 c. [- p4 ]8 FAssignments --> Device...+ X& u/ q' h* V7 v+ [* P) B
--> Device and Pin Option...
- Z* D  j3 P/ z9 h  ]1 o7 [; @Unused Pins:未用到引脚选择,As input tri-stated;& ?. }. q; ?( q+ {3 ~! u
Valtage 引脚默认电压值,选择 3.3-V LVTTL;
, c8 z8 X* ^- f! T% c
. A( @! T8 {/ _) \; [+ N+ v2 c第二步:建立HDL文件. P/ k: u9 s) o8 }
File--> New...1 |7 \2 B4 w/ X  q9 N( ~
Design Files --> Verilog HDL File
( l1 Y; j8 l1 r示例代码:$ _9 t  V+ B( Z; N

; C& Y( c( P" ]- Z/ 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
    " U7 `: x, Z4 Q( ~! B

0 w- {" B# O1 X$ |; B) A# H) w保存文件,名称与之前设置的入口文件相同;
' l+ K( N7 V: u! m: J  v3 n1 J, O
第三步:综合
- ]9 @( _$ u1 e& y4 N点击Analysis & Synthesis进行综合;, P2 l- r# z: X: v
! a: L* w; B. O
第四步:引脚分配
4 X9 k+ Z7 s& F- D# K+ G$ W9 h" mAssignments --> Pins Planner打开引脚分配页面进行分配;, p6 i: Q$ t6 w4 g
按照原理图上分配对应的引脚:
1 l/ @6 n6 N1 ~$ kCLK   --> E18 {. c% ]+ p. ^7 _$ L+ L9 j
LED0 --> E10
+ C! `  h0 P7 E! y" R  dLED1 --> F9: w: m2 D. n  _; H
LED2 --> C91 I2 G  y5 _0 I
LED3 --> D9
+ W  v5 P  S5 t2 O  `I/O Standard 根据实际电路选择电平标准,这里选择3.3-V LVTTL;# L$ D8 q6 h. c# `
同一个Bank的引脚的电平标准必须相同;+ L) v, H) {4 Y7 F, n# k/ R
注意事项:
- C! x" D3 g$ o5 s必须综合之后,才能进行引脚分配,否则系统并不知道你用了哪些引脚;
! A& v0 @4 M( x( Z& S/ |
7 N7 ?' w0 @# ?9 ?  H第五步:编译
- n$ ?, e, y6 q% ?, g0 C点击Complile Design进行全编译;4 a! n& f9 Z6 }( q6 Y
5 d/ J5 K1 h  e/ ^
第六步:下载测试
. y1 T4 A2 W; C. K通过JTAG下载至RAM' R$ o& l0 K5 R  C4 J) h
点击Program Device打开编译器;
! l# i$ A  K* s( r) ~5 u点击Add File...添加output_files目录下生成的sof文件;
$ d6 ]6 b# k3 j* U) i) F点击Start即可进行下载;
% Q+ \  c! K" J1 V! U下载完成后会自动运行,掉电后会丢失;* B0 y& L0 e0 x8 i4 _# Q

: L$ s* s2 W6 r# z$ E% C固化至配置芯片
1 T+ P4 O2 F5 |% j文件转换:
7 L# n( \- U  t4 m/ h8 qFile --> Convert Programming Files...
2 E4 |# ?/ c6 F0 }% W! m; n, SProgramming file type:2 V3 q. Y% J6 F3 [1 _
选择文件格式,指定为jic格式,JTAG Indirect Configuration File(.jic)
- k' Y! `. O7 ^# y2 PConfiguration device:
/ a7 O' X1 z) ]6 Z选择配置芯片型号,与目标板上的型号一致(EPCS16)
  ~/ L1 u( Y5 }+ c% ?4 AFlash Loader:与目标板上FPGA的类别一致;& \! p' e% F5 h' d+ W/ P
Sof Data:选择编译好的sof文件;
# B3 j! a5 L% _$ X: N( x* y点击Generate生成jic目标文件;
4 e) d( F0 s5 y* ^(此时可选择Save Conversion Setup... 保本配置参数,以便下次调入)" _; i7 x0 r3 |3 p
下载固化:
2 y6 c! D/ E( Q: A, D- f0 g点击Program Device打开编译器;
" t% l; N) p) y" `7 z点击Add File...添加output_files目录下生成的jic文件;; J( h' A& M& j7 ~$ g5 B9 ?1 V5 N
点击Start即可进行下载;
9 N5 _3 @  C: N! b下载完成后,不会自动运行,需要重上电才能正常运行;, y( y! z8 x) w2 b

3 D7 q: z, j# |) k( N6 s: C9 m注意事项:
6 T  V4 d' `9 X% T9 x一般只有在完成调试完成后,交付测试时才需要固化,而在调试过程中,则没必要进行固化下载;
0 D/ V% y. H8 Q" L; u
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-29 22:24 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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