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

转——从零开始学FPGA——by ihalin——调用IP核实现计数器

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-1 14:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
本帖最后由 House 于 2019-4-1 15:01 编辑 7 V+ ]/ o" J: z& u0 b
1 z; X! i( s1 _5 u  t+ f2 t
第四个实验:学习调用IP核实现计数器我用的是quartus II 15.0的版本

/ [+ x+ Z" }8 i$ \( x! n- z* w3 A
4 e7 p& U/ ~& I; E" R* F9 H, g
先是建立工程然后使用counter IP核
* B+ A9 A4 A' ?3 ?+ F) t
. \% ^* R9 n9 _) X& W) [6 Y6 b4 Q/ E
& p4 `3 u- S! N
5 e, t' W; u" }$ \

; T" U( G9 i0 w' N: [+ d0 ~
( z  N$ ~; b8 |2 F  g
" r; x4 M4 X. W2 ]/ ^$ N# p0 D
配置counter 选择四位,向上计数,
. w6 l2 s: w8 {9 [* j4 e* l

8 i; a2 M6 |3 U5 I5 z3 ]; s  R
计数输出是模的形式输出应为前面选择的是4位所以模最大是16

' t* U7 v% n% D8 c. ?" ~" p4 p4 R
这里最大输出10可以实现一个BCD码的设计

3 D/ }& r1 z: @% f) p& h
选择carry in carry out 模式
  |% S) B' H2 r& g( _7 z
, ?- u1 I4 j/ W  ~% u

! `& Z6 f  G7 n% g
. ^) ~/ l' j& Q. g" p0 d2 n% ]) G
1 p) t; y; D$ o; v* }# _5 X2 q
然后把点V的文件添加进来。

$ d& x) P8 v4 Q, |7 b" a! a, `6 ]
+ k' m: D/ j- I& }

0 X  k8 K% f6 o* n) [
然后就可以分析和中合了。

, j( a' ]4 z6 u5 S
编译成功没有错误。

( G  u1 ~. s) q$ ]- t6 _  K
9 Z( s- U1 ]( `- {+ Q$ U4 T0 D
然后开始写测试文件了
! f7 B1 V% d. x7 Z
testbench文件
0 E$ a3 d! I* {% G! E
这里使用了一个repeat()语句表示重复括号了面的次数
7 @( f$ `2 r. L/ h  Y5 Q! W0 f6 ^
  • `timescale 1ns/1ns
  • `define clock_period 20
  • module counter_ip_tb;
  •    reg cin;//进位输入
  •         reg clk;//计数基准时钟
  •         wire cout;//进位输出
  •         wire [3:0] q;
  •         counter counter0(
  •         .cin(cin),
  •         .clock(clk),
  •         .cout(cout),
  •         .q(q)
  •         );
  •         initial clk=1;
  •         always #(`clock_period/2) clk = ~ clk;
  •         initial begin
  •         repeat(20)begin //repeat 重复5次
  •                 cin = 0;
  •                 #(`clock_period*5) cin=1;
  •                 #(`clock_period)cin=0;
  •         end
  •         #(`clock_period*200)//延时200个时钟周期后停止工作
  •         $stop;
  •         end
  • endmodule5 w0 L! D: U) k: f" [* A  V6 |

$ B  ]) u+ c0 n  O2 d3 v

6 o( a' ^! I+ v  F* t0 G5 f0 h6 w4 q0 W
4 O- ]0 Y0 E3 T. ~: n2 u2 k, N' }$ `
然后开始RTL仿真
2 j: A4 P! s" `9 I' f! N

( {0 Z$ `- L3 W9 X
符合要求计数从0到9 cout=1;

% r8 q: m% D8 m9 V
然后是连个4位的计数器级联
, w) m- M/ V+ a

8 K! y' p  k0 P/ o5 r
建一个counter_top

7 r5 o0 b4 w& ?
  • module counter_top(cin,clk,cout,q);
  •         input cin;
  •         input clk;
  •         output cout;
  •         output [7:0]q;
  •         wire cout1;
  •         counter counter0(
  •                         .cin(cin),
  •                         .clock(clk),
  •                         .cout(cout1),
  •                         .q(q[3:0]));
  •         counter counter1(
  •                         .cin(cout1),
  •                         .clock(clk),
  •                         .cout(cout),
  •                         .q(q[7:4]));
  • endmodule
    9 a" ?9 g0 w0 |! l2 i" M! ~
) i% p% i% d* V/ P' N: F2 X
& K8 ]) G$ x9 e. I
$ p7 A) h$ G  o/ U0 S. l% u9 l4 C
' D4 d% e: Y3 D# U
然后RTL仿真:
. F  f) [5 D! k3 |
9 U+ m  ~& X. O! I6 c: b
% V0 T- O3 w8 V& y/ I. g- |, b
! @3 f3 K) |" e/ K, a! S
符合
4 d6 W' P  F+ T
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-30 01:36 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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