芯路恒电子技术论坛

 找回密码
 立即注册

扫一扫,访问微社区

热搜: 活动
查看: 732|回复: 3

《小梅哥视频——学习之路》

[复制链接]
  • TA的每日心情
    开心
    2018-6-2 17:17
  • 2

    主题

    2

    帖子

    19

    积分

    新手入门

    Rank: 1

    积分
    19
    发表于 2018-6-4 20:43:31 | 显示全部楼层 |阅读模式
    《小梅哥FPGA学习视频之路》
                      FPGA小白—强仔
    1. 二选一选择器 lesson_1
    2. 3_8译码器   lesson_2
      1)作业:4_16译码器
      2 时序逻辑描述译码器。观察后仿真出现的乱码数据。
      3modelsim中如何显示模拟波形
      4)三段式状态机的描述
    3.计数器设计 lesson_3
      (1)LED灯每500ms翻转一次,开发板或者FPGA的时钟频率是50Mhz或者100Mhz,周期分别是20ns或者10ns.
       (2)计数个数的计算:500_000_000ns/20ns=25_000_000
       (3)modelsim中设置线条的颜色和时间显示单位。如果仿真时间很长,对于时钟信号,可以删除,不会影响进程。
       (4)define的使用,`define clk_period 20
              调用 always #( `clk_period/2 ) clk =~clk
       (5)parameter 和define在后仿真中的使用区别。使用parameter后仿真出现问题,报错。
    4.Quartus II 中的LPM_counter IP核的调用
      (1)FPGA的设计方法 ;原理图输入、Verilog HDL 设计方式、IP核输入方式
       (2)repeat关键词在仿真中的使用
       (3)IP核生成之后,可以把自动生成的.v文件直接作为顶层。也可以自己建立个文件,作为顶层文件。
       (4)在仿真中,如果改变了对应的设计文件,只需要在Quartus II 中点击那个分析和综合按钮检查有无语法错误,然后在modelsim中library中找到work文件夹,点击对应改变的文件,右键recompile即可,最后点击restart和run_all即可看到波形。
       (5)使用2个4位计数器,构成一个8位计数器 ,计数值最大是255.(计数器级联问题  )。实验中的153换成十六进制就是99,也就是BCD码。
       (6)后仿真出现问题,前仿真没有问题。
       (7)后仿真报错:Instantiation of 'counter_top' failed. The design unitwas not found
    5.BDC码计数器
    BCD码就是用4位二进制数来表示一位10进制数,这个十进制数字最大就是9.这个用途在数码管以及一些相关的显示应用中,很有用,同时节约很多FPGA内部的逻辑资源。当得到一个十进制数字之后,一般会按照这种方法去求出每位上的数字。
      128/100=1; (128/10)%10=2; 128%10=8.
    这样就可以求出每个位上要显示的数字,但是使用的资源是很多的。
    1)设计一个4位的BCD码计数器,在进位信号的到来后,计数自动加1,计数到9清零。
    2)通过计数器级联设计一个12位的BCD码计数器,计数的最大十进制数是999.
    3)进位输出选择时序逻辑和组合逻辑2种,方式比较结果
    误解1:这里的BCD码就是十进制数,所以仿真的时候就是用十六进制,而不是十进制,这一点一定要明白,用4位二进制数表示十进制数。
    误解2D触发器(寄存器)会有一拍的延迟,这个在实验中,计数的仿真中都有注释,于是使用了组合逻辑输出结果。
    误解3:实验代码中,有2种判断cnt的方式,两种使用的资源数目不相同。
    技巧总结:在modelsim中有几个快捷键
    1ctrl+A是选中波形中所有的信号;
    2ctrl+G是自动将波形中的信号自动分组;
    3)波形中信号路径过长,有一个按钮点击之后就只剩下信号名。在信号列表最下方,锁定测量工具的旁边。
    6.阻塞赋值(=)和非阻塞赋值(<=
    区分阻塞和非阻塞赋值的区别,以及如何使用它们2者,完成我们的设计。
      阻塞赋值就是:语句在执行的过程中,是按先后顺序执行的。
    非阻塞赋值:代码在执行过程中,会同时并行执行。
    一般都会建议:在always 块中尽可能的使用费阻塞赋值。
    (1)代码验证这2个区别的过程中,提到了代码中加入延时的语句:#`tp.这条语句加入的是我们的源设计文件,和仿真中的延时后很大的区别。它在综合的时候,不会被综合成实际电路,但是在仿真的时候,会模拟代码被综合后实际电路中门结构的延时。
    (2)如:D<=#`tp b+c;
    (3)观察当在使用阻塞赋值语句的时候,语句的先后顺序对于生成的电路影响。
    7.状态机的理解
    1)状态的划分和设计
    21段式、2段式、3段式分别描述这个状态机
    3)状态机的编码类型:binary码、gray码、one_hot
    8.独立按键消抖——状态机进一步学习
       机械按键就是按照机械原理制成,并且在按键按下和释放的时候,会有一定的抖动时间,这个时间是不超过20ms.
       按键的一个触点接地,另一个触点接上拉电阻接电源,然后送给FPGA.按键按下就输出0,未按下就输出1.
       1)状态设计:
               未按下时是空闲状态IDLE
                      按下抖动滤除Filter
                      按下稳定状态DOWN
                      释放抖动滤除状态Filter1(滤波)
      2)边沿(下降沿)检测
             使用2级寄存器分别寄存前后2次的采样值,判断出事下降沿还是上升沿。
    3)逻辑和按位的一些操作区别和注意
    4)仿真模型的概念理解
    5task任务的使用,在仿真中实现代码的简洁
    6)随机数发生函数$random使用,
    7)状态图
    入手小梅哥开发板块一个礼拜了,学习进度按照自己的掌握情况,一边学习,一边积累技巧和经验。每次听到小梅哥录制的视频的开头和结尾的音乐,我就觉得自己充满了力量,发誓不拿下FPGA这座大山,至少也得挖下一半的山脚。我就是我,我知道自己有几斤几两,我更知道自己想要什么。
    外号:小强、强仔、鸡汤小王子,对,它们都是我。

       
       
       

    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 06:54
  • 12

    主题

    175

    帖子

    2787

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    2787
    发表于 2018-6-4 20:58:34 | 显示全部楼层
    楼主厉害!佩服佩服
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    萌哒
    昨天 07:48
  • 3

    主题

    23

    帖子

    310

    积分

    中级会员

    Rank: 4

    积分
    310
    发表于 2018-6-4 21:27:36 | 显示全部楼层
                      
    贵在坚持!!!
    楼主加油!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    16

    积分

    新手入门

    Rank: 1

    积分
    16
    发表于 2018-6-5 22:38:36 | 显示全部楼层
    :):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
    华丽的背后,有多少.............
    回复 支持 反对

    使用道具 举报

    *滑动验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|芯路恒电子技术论坛  

    GMT+8, 2018-8-21 03:58 , Processed in 0.219458 second(s), 9 queries , File On.

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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