FPGA入门篇———Verilog计数器
一.Verilog介绍Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。二.Verilog计数器
https://pic4.zhimg.com/80/v2-f8f85645f7a680cd3966f06549f4bec3_720w.jpg
我们用 明德杨《至简设计法》--八部计数法来分析此题
1). 明确目标:找输入输出并绘画I/O表① 输入输出:1.模块时钟,D触发器中clk和rst_n为输入,位宽默认为1。2.题目给出输出为dout,位宽和时钟默认为1。② I/O表:
https://pic4.zhimg.com/80/v2-673cc804888a4444d2f0082b824f20b3_720w.jpg
2). 画波形图① 根据题目分析绘画波形图先看第一个阶段a部分:
https://pic2.zhimg.com/80/v2-99e5065ed55b794965a54534e6d2d6ed_720w.jpg
https://pic4.zhimg.com/80/v2-06757e1a142a7559cf962485c4123f27_720w.jpg
完成第一阶段后继续后面的内容:
https://pic4.zhimg.com/80/v2-deef2ffe5cca006f70ca3da82abd8b43_720w.jpg
https://pic4.zhimg.com/80/v2-62a108056ad016abd5e1d484919da2eb_720w.jpg
3). 计数框架① 计数结构:以该题为例,题目要求多次收到en的信号,多个阶段的信号处理,所以我们可以优先考虑使用两个计数器,命名为cnt_0和cnt_1,分别来记录en=1后dout处于哪个阶段。
https://pic2.zhimg.com/80/v2-99e5065ed55b794965a54534e6d2d6ed_720w.jpg
https://pic2.zhimg.com/80/v2-6c07688148c0ce6d52d0c23660bf2ee9_720w.jpg
4). 加一结束条件
https://pic2.zhimg.com/80/v2-90c2444aff9a4ff063ecbe15a7798a61_720w.jpg
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条件。
https://pic3.zhimg.com/80/v2-2e54792ab5e8fc1d371768c5b87e657e_720w.jpg
5). 定义特殊点
https://pic4.zhimg.com/80/v2-63f3de1e6341669ea912f6ce42471047_720w.jpg
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_0cnt_0 cnt_0初始值:0;cnt_0的加1条件:flag_add==1;cnt_0的结束条件:计数至cnt==x-1;b. cnt_1cnt_1初始值:0;cnt_1的加1条件:cnt_1=end_cnt_1;cnt_1的结束条件:cnt_3-1;c. doutdout由0→1:en = 1;dout由1→0:end_cnt_0;d. flag_addflag_add由0→1:en==1flag_add由1→0:end_cnt_1e. x与zcnt_1 == 0: cnt_1 == 1:x = 5; x = 7;z = 1; z = 2;cnt_1 == 2;x = 2;z = 3;x为时钟周期,z是数值7). 计数器代码
https://pic3.zhimg.com/80/v2-aef16ebbb5711c0394e8325d15fb5a12_720w.jpg
Ø 计数器框架、加1条件和结束条件代码
8). 功能代码
https://pic2.zhimg.com/80/v2-d1c258ef0c6f6a12247f7b5f353f8fc5_720w.jpg
Ø 按照完整性检查,写出计数器之外的代码。
最后仿真检测一下代码:https://pic2.zhimg.com/80/v2-3fd13bd00247ca2b236d6b0294f4e06d_720w.jpg
第一次接收到en信号
https://pic2.zhimg.com/80/v2-0199c87325541e2884ec47e2f8990d41_720w.jpg
第二次接收到en信号
https://pic4.zhimg.com/80/v2-8d82f69afaf1babd1de5e53752b52a47_720w.jpg
想领取FPGA学习资料进群交流可加易老师微信:13112063618
温馨提示:明德扬除了培训学习还有元器件一站式配单业务,人工服务的模式采购,采购客服人员联系方式:明德扬元器件一站式配单服务咨询:易老师https://pic2.zhimg.com/80/v2-3612e01d3df21a44113a3bc659aa1925_720w.jpg明德扬科技教育
页:
[1]