PW试验-----verilog
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的更多相关文章
- SPI的通信试验 --verilog (从机-全双工)
SPI的 有关知识参考FPGA作为主机的通信实验. 本实验中FPGA作为从机通过SPI与MCU等通信的试验,可以在时钟上升沿接收数据并且在时钟下降沿发送数据,模仿全双工模式.接收的 数据作为地址,通过 ...
- 矩阵按键的试验---verilog
矩阵键盘的试验,采用三段式状态机处理方法. 难点在于检测状态机中:按键消抖以后逐列检测. 电路图: 代码 /********************************Copyright***** ...
- SPI试验---verilog(实用单通模式)
SPI通信的读写操作 一. SPI简介: SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时).也是所有基于SP ...
- FPGA Verilog HDL 系列实例--------步进电机驱动控制
[连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...
- .net垃圾回收机制编程调试试验
1. 什么是CLR GC? 它是一个基于引用跟踪和代的垃圾回收器. 从本质上,它为系统中所有活跃对象都实现了一种引用跟踪模式,如果一个对象没有任何引用指向它,那么这个对象就被认为是垃圾对象,并且可以被 ...
- Verilog学习笔记简单功能实现(二)...............全加器
先以一位全加器为例:Xi.Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号.列表有: Xi Yi Cin Sum Cout 0 0 0 0 0 0 0 1 1 0 ...
- Verilog HDL模型的不同抽象级别
所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述.如果只从行为功能的角度来描述某一电路模块,就称作行为模块.如果从电路结构的角度来描述该电路模块,就称作结构模块 ...
- Verilog学习笔记基本语法篇(十二)········ 编译预处理
h Verilog HDL语言和C语言一样也提供编译预处理的功能.在Verilog中为了和一般的语句相区别,这些预处理语句以符号"`"开头,注意,这个字符位于主键盘的左上角,其对应 ...
- Verilog学习笔记基本语法篇(十一)········ 常用系统函数
1)系统任务:$monitor 格式: $monitor(p1,p2,p3...pn); $monitor; $monitoron; $monitoroff; 任务$monitor提供了监控输出列 ...
随机推荐
- ASP.NET MVC ActionFilterAttribute的执行顺序
http://diaosbook.com/Post/2014/6/3/execution-order-of-actionfilter-aspnet-mvc ASP.NET MVC里面我们要自定义Act ...
- 解决IE apk变成zip:Android 手机应用程序文件下载服务器 配置解决方法
APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...
- P、NP、NPC、NP-Hard问题
转自:http://www.matrix67.com/blog/archives/105 总结 P:能用多项式时间求解的问题NP:能用多项式时间验证的问题(但不知道能不能用多项式时间求解).存在不属于 ...
- 使用key链接远程Git仓库
使用密钥来访问Git仓库比密码安全多了,只要把公钥配置在远程端,把密钥放到~/.ssh/里以id_rsa命名即可. 不过有人要问如果有多个仓库,而且用了不同密钥怎么办? 这时候可以在~/.ssh/文件 ...
- Linux samba配置
更详细的配置地址:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 1 安装 yum -y install samba 2 ...
- Homebrew安装
1. 安装Command Line Tools 终端输入 xcode-select --install 回车,若下载慢,可搜索Command line Tools的pkg文件,自行安装. 或者直接安装 ...
- JS(截取字符串,显示当前系统时间yyyy-MM-dd,从文本框得到的数值计算)
截取字符串: var str = "1234567890"; var a = str.substring(0,8); //==str.substring(8)---结果:12 ...
- ASP.NET版Memcached监控工具(转载)
在上一篇文章<使用Memcached提高.NET应用程序的性能>中周公讲述如何在.NET中使用Memcached来提高.NET应用程序的性 能.在实际的使用中有可能出现Memcached因 ...
- 你无法修改 Git 的历史记录
转自:http://www.oschina.net/news/26241/you-can-not-change-git-history 有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 ...
- git基础知识总结
1,clone git clone https://github.com/KoMiles/helloword helloword 2,pull git pull 3,commit git commit ...