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提供了监控输出列 ...
随机推荐
- POJ1845Sumdiv(求所有因子和 + 唯一分解定理)
Sumdiv Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 17387 Accepted: 4374 Descripti ...
- TOJ3540Consumer(有依赖的背包)
http://acm.tju.edu.cn/toj/showp3540.html3540. Consumer Time Limit: 2.0 Seconds Memory Limit: 655 ...
- abstract 类也可以继承 实体类
public class BaseReq { public String UserId { get; set; } public BaseReq() { } } public abstract cla ...
- params参数的调用
namespace params参数的用法 { class Program { public static void Test(string name,params int[] score) { ; ...
- nl命令详解
nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...
- ssh事务配置
<!-- 配置业务层 --> <bean id="employeeService" class="cn.bdqn.jboa.service.impl.E ...
- RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大、最高效的方法之一。它为在分布式计算环境中运行的几乎所有应用程序提供基础。
RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大.最高效的方法之一.它为在分布式计算环境中运行的几乎所有应用程序提供基础.本文介绍 RPC 客户机和服务器之间基本的事件流 ...
- 关于windows系统下 webpack的使用
最近包子在研究webpack打包,发现,真是个好东西,以前完全不懂,其实很简单,步骤如下: 1.安装webpack嘎嘎嘎嘎~~~ 2.初始化一下 3.这玩意是啥,我不知道,就依葫芦画瓢 4.这玩意是啥 ...
- Open Credit System
Open Credit SystemInput: Standard Input Output: Standard Output In an open credit system, the studen ...
- string和stringstream用法总结
参考:http://blog.csdn.net/xw20084898/article/details/21939811