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提供了监控输出列 ...
随机推荐
- jQuery返回顶部(精简版)
jQuery返回顶部(精简版) <!DOCTYPE html><html lang="en"><head> <meta charset=& ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
- MySQL中concat函数
MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- SpringMVC 返回JSON数据
首先添加json包
- WinFrom 只启动一个exe,并且获得焦点
只启动一个exe方法: using System; using System.Collections.Generic; using System.Runtime.InteropServices; us ...
- 关于visio 2007导入独立图库
很多作网络拓扑或服务器系统拓扑时,我们都会找到相关的Visio图库来画,但很多时候我们不知如何才能够直接导入,下面是我自己的导入方式,供大家参考下! 打开07Visio,自动加载设置: 工具--> ...
- [Effective JavaScript 笔记] 第14条:当心命名函数表达式笨拙的作用域
js函数会根据上下文改变其含义. function double(x){return x*2;} 这是一个函数声明,也可以是一个命名函数表达式(named function expression),取 ...
- SVN安装与配置 SVN整合MyEclipse
SVN安装: 1.安装服务器 ######### 安装文件:SVN服务器############### # http://www.collab.net/downloads/subversion # C ...
- SHSEE 备战最后十(四)天日记
努力. Day -1 看书.睡觉. Day 0 上午考试.语文纯RP题跪.理总不错. 下午上课,各种神. Day 1 上午下午讲课...Day 0成绩出来才#17.... Day 2 考试..这次题目 ...
- Python配合BeautifulSoup读取网络图片并保存在本地
本例为Python配合BeautifulSoup读取网络图片,并保存在本地. BeautifulSoup可代替正则表达式,更好地解析Html文本,获取其中的指定内容,如Tag.Property等 # ...