明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 5253|回复: 0

FPGA入门篇———Verilog计数器

[复制链接]
发表于 2019-11-7 16:58:41 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

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

x
一.Verilog介绍
        Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDLVHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。

二.Verilog计数器


例题: 图片1.png


我们用 明德杨《至简设计法》--八部计数法来分析此题

1). 明确目标:找输入输出并绘画I/O表
        ① 输入输出:
1.模块时钟,D触发器中clkrst_n为输入,位宽默认为1
                    2.题目给出输出为dout,位宽和时钟默认为1
        ② I/O表:
图片2.png
2). 画波形图
根据题目分析绘画波形图
                先看第一个阶段a部分:
图片3.png
图片4.png
完成第一阶段后继续后面的内容:
图片5.png
图片6.png
3). 计数框架
计数结构:
以该题为例,题目要求多次收到en的信号,多个阶段的信号处理,所以
    我们可以优先考虑使用两个计数器,命名为cnt_0cnt_1,分别来记录en=1
dout处于哪个阶段。
图片7.png
图片8.png
4). 加一结束条件
图片9.png

u cnt_0加1条件:收到en的信号后,利用变量flag_add辅助来持续周期,所以cnt_0=flag_add为
       1条件。
u cnt_1加1条件:当cnt_0完成一个阶段计数后,每收到en的信号,cnt_1就开始计数,完成一个阶段cnt_1加1,所以  cnt_1=end_cnt_0  为加1条件。
图片10.png
5). 定义特殊点
图片11.png

a  整个功能的开始点:en;
b  cnt_0的结束条件:cnt _0= x-1,定为end_cnt_0;
c  cnt_1的结束条件:cnt_1= 3-1,定为end_cnt_1;
d  dout变高条件:en==1。  

6). 完整性检查
保证每个信号的变化条件已经清晰明确,并且变化条件要用信号表示。
                            a. cnt_0
                   cnt_0 cnt_0初始值:0;
                   cnt_0的加1条件:flag_add==1;
                   cnt_0的结束条件:计数至cnt==x-1;
                 b.  cnt_1
                    cnt_1初始值:0;
                    cnt_1的加1条件:cnt_1=end_cnt_1;
                    cnt_1的结束条件:cnt_3-1;
                            c.   dout
                   dout由0→1:en = 1;
                   dout由1→0:end_cnt_0;
d.  flag_add
                       flag_add由0→1:en==1
                              flag_add由1→0:end_cnt_1
e.   x与z
                       cnt_1 == 0:                          cnt_1 == 1:
                    x = 5;                                x = 7;
                    z = 1;                                z = 2;
                        cnt_1 == 2;
                             x = 2;
                             z = 3;
                     x为时钟周期,z是数值
7). 计数器代码
图片12.png
Ø 计数器框架、加1条件
    和结束条件代码


8). 功能代码
图片13.png

Ø 按照完整性检查,写
   出计数器之外的代码。

       最后仿真检测一下代码:
       图片14.png
第一次接收到en信号
图片15.png
第二次接收到en信号
图片16.png


FPGA视频课程  培训班 FPGA学习资料
吴老师 18022857217(微信同号) Q1241003385
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-4-20 05:43 , Processed in 0.050960 second(s), 25 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

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