• Verilog HDL那些事_建模篇笔记(实验一,实验二)


    实验一:永远的流水灯

        扫描频率配置为100Hz,即是说扫描周期为10ms.这里需要注意的是扫描周期的概念。流水灯嘛,顾名思义,扫描周期指的是流水灯扫一轮所需要的时间。听到说周期,就应该想到在建模的时候需要写计数器模块,这个计数器模块应该是神一般的独立存在,独立运行。每隔10ms复位一次,复位后又重新开始计数。

    实验二:闪耀灯和流水灯

        闪耀灯涉及到闪耀频率,流水灯涉及到扫描频率的概率。这里先区分一下闪耀频率和扫描频率的概念。闪耀频率对应闪耀周期,闪耀周期是针对于单个LED灯而言的,即是指LED灯亮的时间加上熄灭的时间总和称为一个闪耀周期。

        关于写计数器模块,对于时间较长的周期,可以采用分级的方式来写,例如:100ms的时间,前一级我们可以先写一个1ms的计数模块,当这一级的计数器计满1ms的时候,可以把这一刻当做后一级100ms计数器的一个条件语句,触发下一级的计数。

        在流水灯模块,最后采用位拼接运算来控制rLED_Out各个位的电平,达到控制LED灯的目的。其中语句:

    rLED_Out <= {rLED_Out[1:0],1’b0};//注意这里面的没一个量都要限定位宽

        每次执行此条语句,相当于把最低位赋值0,把rLED_Out[1:0]赋值给rLED_Out[2:1],即原来的第0位放在现在的第一位,原来的第1位放在现在的第2位,这相当于把数据进行了左移操作。

    总结:

        对比一下实验一与实验二的流水灯建模思路:

        实验一把每一颗LED灯当做一个功能模块进行单独建模,通过一个总的计数器计数,把计数器计数的范围值当做控制LED灯亮与灭的条件控制语句。

    实验一建模框图

        实验二把流水灯当做一整个模块,在定义output时定义[2:0]LED_Out;即有多少颗LED灯,就定义多少个位,通过写出状态移位控制程序来控制LED灯的亮与灭,达到流水灯的效果。

    实验二建模框图

  • 相关阅读:
    c# 调用短信平台接口,给手机发送短信
    WPF Bitmap转成Imagesource的性能优化
    WPF TriggerAction弹出子窗体 TargetedTrigger、TargetedTriggerAction用法
    统一社会信用代码 正则验证
    全选或反选表格中第一列的checkbok
    数据库五大约束使用方法
    通用的通过模型插入或更新数据库
    U8隐藏的配置项
    android上如何写配置文件
    Android Studio出现Failed to open zip file问题的解决方法
  • 原文地址:https://www.cnblogs.com/chensimin1990/p/5673157.html
Copyright © 2020-2023  润新知