PWM,脉冲宽度调制。顾名思义,是通过调制脉冲的宽度,即占空比,来实现的。可是使占空比逐渐由最小增加到最大,也可以使占空比由最大减少到最小来实现不同的现象。若用LED灯来显示现象,则可以称作:LED呼吸灯;

简单的代码如下:

    /********************************Copyright**************************************
**----------------------------File information--------------------------
** File name :led_pwm.v
** CreateDate :2015.03
** Funtions :pwm的试验,用led灯来显示pwm的效果
** Operate on :M5C06N3L114C7
** Copyright :All rights reserved.
** Version :V1.0
**---------------------------Modify the file information----------------
** Modified by :
** Modified data :
** Modify Content:
*******************************************************************************/ module led_pwm (
clk,
rst_n, pwm_out
);
input clk; /* 24Mhz */
input rst_n;
// wire rst_n;
output pwm_out; // assign rst_n = 1;
//-------------------------------------
/* ius */
localparam t_1us = 'd23;
// localparam t_1us = 5'd6; /* 用于测试 */
reg [:] cnt1;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
cnt1 <= ;
end
else
begin
if(cnt1 == t_1us)
cnt1 <= ;
else
cnt1 <= cnt1 + ;
end
end /* 1ms */
localparam t_1ms = 'd999;
// localparam t_1ms = 10'd19; /* 用于测试 */
reg [:] cnt2;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
cnt2 <= ;
end
else
begin
if(cnt1 == t_1us)
begin
if(cnt2 == t_1ms)
cnt2 <= ;
else
cnt2 <= cnt2 + ;
end
else
cnt2 <= cnt2;
end
end /* 1s */
localparam t_1s = 'd999;
// localparam t_1s = 10'd19; /* 用于测试 */
reg [:] cnt3;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
cnt3 <= ;
end
else
begin
if((cnt1 == t_1us)&&(cnt2 == t_1ms))
begin
if(cnt3 == t_1s)
cnt3 <= ;
else
cnt3 <= cnt3 + ;
end
else
cnt3 <= cnt3;
end
end reg flag;
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
flag <= ;
end
else if((cnt1 == t_1us)&&(cnt2 == t_1ms)&&(cnt3 == t_1s))
begin
flag <= ~flag;
end
else
flag <= flag;
end assign pwm_out = flag?((cnt2 < cnt3)?:):((cnt2 < cnt3)?:); endmodule

仿真验证代码:

    /********************************Copyright**************************************
**----------------------------File information--------------------------
** File name :led_pwm_tb.v
** CreateDate :2015.03
** Funtions : led_pwm 的测试文件
** Operate on :M5C06N3L114C7
** Copyright :All rights reserved.
** Version :V1.0
**---------------------------Modify the file information----------------
** Modified by :
** Modified data :
** Modify Content:
*******************************************************************************/ module led_pwm_tb;
reg clk;
reg rst_n; wire pwm_out; led_pwm led_pwm_1(
.clk,
.rst_n, .pwm_out
); localparam tck = ;
localparam t = /tck;
always
#(t/) clk = ~clk; initial
begin
clk = ;
rst_n = ; #(*t) rst_n = ; end endmodule

仿真结果:

PW试验-----verilog的更多相关文章

  1. SPI的通信试验 --verilog (从机-全双工)

    SPI的 有关知识参考FPGA作为主机的通信实验. 本实验中FPGA作为从机通过SPI与MCU等通信的试验,可以在时钟上升沿接收数据并且在时钟下降沿发送数据,模仿全双工模式.接收的 数据作为地址,通过 ...

  2. 矩阵按键的试验---verilog

    矩阵键盘的试验,采用三段式状态机处理方法. 难点在于检测状态机中:按键消抖以后逐列检测. 电路图: 代码 /********************************Copyright***** ...

  3. SPI试验---verilog(实用单通模式)

    SPI通信的读写操作 一.     SPI简介: SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时).也是所有基于SP ...

  4. FPGA Verilog HDL 系列实例--------步进电机驱动控制

    [连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...

  5. .net垃圾回收机制编程调试试验

    1. 什么是CLR GC? 它是一个基于引用跟踪和代的垃圾回收器. 从本质上,它为系统中所有活跃对象都实现了一种引用跟踪模式,如果一个对象没有任何引用指向它,那么这个对象就被认为是垃圾对象,并且可以被 ...

  6. Verilog学习笔记简单功能实现(二)...............全加器

    先以一位全加器为例:Xi.Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号.列表有:   Xi     Yi    Cin Sum Cout 0 0 0 0 0 0 0 1 1 0 ...

  7. Verilog HDL模型的不同抽象级别

    所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...

  8. Verilog学习笔记基本语法篇(十二)········ 编译预处理

    h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...

  9. Verilog学习笔记基本语法篇(十一)········ 常用系统函数

    1)系统任务:$monitor   格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...

随机推荐

  1. CSS3系列二(媒体支持、文字与字体相关样式、盒相关样式)

    CSS3媒体支持 在css3中允许我们在不改变内容的情况下,在样式中选择一种页面的布局以精确的适应不同的设备,从而改善用户体验 可以利用meta标签在页面中指定浏览器在处理本页面时按照多少像素的窗口宽 ...

  2. eclipse中新建javaweb项目,查看某些类的源码

    网上查到的大多说在项目下选择properties,在java Build Path下Add ExternalJAR Selection,加上Tomcat->lib下的servlet-api.ja ...

  3. WPF 复制和粘贴

    /// <summary> /// 复制或剪切文件到剪切板 /// </summary> /// <param name="files">文件路 ...

  4. Hibernate unsaved-value 属性

    Session的saveOrUpdate方法是由Hibernate来判断被操作对象究竟是一个持久化对象还是临时自由状态对象.这需要在对象映射文件的主键id中定义unsaved-value属性,如果不显 ...

  5. iOS-使用Xcode拉伸图片

    如果要制作一个类似于QQ消息气泡的图片,该如何制作呢?android中可以使用.9图片指定图片中的某一部分拉伸,那iOS中类似的功能要如何实现呢,Xcode提供了类似的功能.具体步骤如下: 1.选择需 ...

  6. 你知道require是什么吗?

    引题 用过node的同学应该都知道require是用来加载模块的,那你是否存在如下的疑问呢? 1. require(path)是如何依据path找到对应module呢? 2. 为何在模块定义中,一定要 ...

  7. firefox查看微信公众平台的数据分析时就出现不信任链接怎么办?

    昨天用360清理垃圾后火狐主页的快速拨号栏消失了,整了半天还是无法使用就重装了一下firefox,导入备份的书签,添加自己所需的附加组件,设置为隐私模式,开始继续体验.按惯例打开微信公众平台,查看数据 ...

  8. Java之内存分析和String对象

    原文地址:http://www.cnblogs.com/devinzhang/archive/2012/01/25/2329463.html 文中 s2后面的注释是错误的,应该是”创建一个对象(堆中) ...

  9. jsp 学习 第3步 - el 自定义方法 tld 说明

    使用 el 的过程中,需要使用到后端代码处理逻辑,这个时候我们就需要自定义 方法. 如我们后端代码定义如下: package com.rhythmk.common; public class FncH ...

  10. TCP协议漏洞影响大量Linux设备

    导读 本周三在得州奥斯丁举行的 USENIX 安全研讨会上,加州大学河滨分校研究生 Yue Cao 将报告一个严重的TCP协议边信道漏洞(PDF),该漏洞允许攻击者远程劫持任意两主机之间的会话.该漏洞 ...