时钟信号的占空比调整——Verilog
时钟信号的占空比调整——Verilog
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer: chensimin
//
// Create Date: 2018/10/16 11:09:15
// Design Name:
// Module Name: duty_regulate
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////// module duty_regulate( input wire clk,
input wire rst, output wire SCL_POS,
output wire SCL_HIG,
output wire SCL_NEG,
output wire SCL_LOW
); //-------------------------------------------------
//首先规定一个时钟周期的长度 512
reg [:]start_cnt = ; always @(posedge clk or posedge rst)
begin
if(rst)
start_cnt <= 'd0;
else if(start_cnt == 'd511)
start_cnt <= 'd0;
else
start_cnt <= start_cnt + 'b1;
end //-------------------------------------------------
//当计数器计数到0时,SCL_HIG即整个高电平的中点
//当计数器计数到127时,SCL_NEG即时钟的下降沿
//当计数器计数到255时,SCL_LOW即时钟整个低电平的中点
//当计数器计数到382时,SCL_POS即时钟的上升沿
//结论:通过调整时钟上升沿,下降沿,高电平中点,低电平中点的位置,即可以调整整个时钟的占空比
reg [:]cnt = 'd5;
always @(posedge clk or posedge rst)
begin
if(rst)
cnt <= 'd5;
else
begin
case(start_cnt)
'd0 : cnt <= 3'd1;
'd127: cnt <= 3'd2;
'd255: cnt <= 3'd3;
'd382: cnt <= 3'd0;
default: cnt <= 'd5;
endcase
end
end //------------------------------------------------- assign SCL_POS = (cnt=='d0);
assign SCL_HIG = (cnt=='d1);
assign SCL_NEG = (cnt=='d2);
assign SCL_LOW = (cnt=='d3); endmodule /* add_force {/duty_regulate/clk} -radix hex {1 0ns} {0 50000ps} -repeat_every 100000ps
add_force {/duty_regulate/rst} -radix hex {1 0ns} {0 200ns} */
仿真结果:

时钟信号的占空比调整——Verilog的更多相关文章
- FPGA入门1
FPGA入门知识介绍 近几年来,由于现场可编程门阵列(FPGA)的使用非常灵活,又可以无限次的编程,已受到越来越多的电子编程者的喜爱,很多朋友都想学习一些FPGA入门知识准备进行这个行业,现在关 ...
- FPGA设计思想与技巧(转载)
题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢.这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一 ...
- VerilogHDL常用的仿真知识
在描述完电路之后,我们需要进行对代码进行验证,主要是进行功能验证.现在验证大多是基于UVM平台写的systemverilog,然而我并不会sv,不过我会使用verilog进行简单的验证,其实也就是所谓 ...
- FPGA - 认识FPGA
一.何为FPGA? FPGA,英文全拼:Field-Programmable Gate Array 现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集 ...
- STM32 HSE模式配(旁路模式、非旁路模式)
1.外部晶体/陶瓷谐振器(HSE晶体)模式 这种模式用得比较常见,HSE晶体可以为系统提供较为精确的时钟源.在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定.在启动时,直到 ...
- STM32系统时钟RCC(基于HAL库)
基础认识 为什么要有时钟: 时钟就是单片机的心脏,其每跳动一次,整个单片机的电路就会同步动作一次.时钟的速率决定了两次动作的间隔时间.速率越快,单片机在单位时间内所执行的动作将越多.时钟是单片机运行的 ...
- STM32F7系列时钟相关问题:HSE模式配置(旁路模式、非旁路模式
从时钟源的角度,分为两类外部时钟(E)和内部时钟(I).从时钟速率的角度,分为两类高速时钟(HS)和低速时钟(LS).而把它们组合起来就有四种时钟:HSE.HIS.LSE.LSI.至于为什么会有这么复 ...
- IC设计基础
一 前言 这一周连续两场线下面试,紧接着又是微信视频面试,从连续三天的面试中,收获颇丰! 存在的问题: 一是对项目细节模糊: 二是IC基础知识薄弱: 具体表现是,在面试过程中,如被问到DDR3和千兆以 ...
- 单片机pwm控制基本原理详解
前言 PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信 ...
随机推荐
- 关于几天来研究使用css3动画的一点总结
1. 为避免合成线程频繁计算导致性能降低, 使用transform属性,尽量避免使用width / height / padding / left 等. 2. 侧边栏下阴影遮罩层动画, 如果用back ...
- linux下安装FTP详细
一:安装ftp 1.检查是否安装了 ftp :(下图是已安装的效果,没安装没有展示) rpm -qa|grep vsftpd 2.安装指令:(找一个 -y 指令) yum install -y v ...
- jsp标签库选择框示例
<select onchange="yearchange(this);" name="year" id="year"> < ...
- C 设计模式:装饰模式
最近在公司分享了下C语言版的设计模式,记录一下吧. 参考:<设计模式之禅>中“装饰模式”章节. 上面书中是用C++来实现的,我使用了书中的例子,改用C语言来实现. 一.基础知识 面向对象最 ...
- IIC时序和24C02读写字节时序
一年前刚学51单片机时,接触到了IIC时序和用IIC通信读写AT24C02的学习历程.那时刚刚大一,对数据线时钟线等概念不是很清楚,也没有分清IIC通信的底层时序和写24c02的时序为什么不同. 借着 ...
- python小白的自述
python语言作为目前受用面比较广泛的一种语言,具有简单易学,功能强大的特点.初次接触python完全是由于好奇心,正是因为python的出现,才让我觉得编程不是那么的神秘了.不过作为一个编程小白来 ...
- vuex核心
最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是dat ...
- 随手小代码——Python 从集合中随机抽取元素
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- React中使用echarts
1.安装相关的依赖: cnpm i react-for-echarts -S cnpm i echarts -S 2.使用方法: 页面引入: import ReactEcharts from 'ech ...
- 克拉美罗界(CRB)
转载自:http://www.cnblogs.com/rubbninja/p/4512765.html 各种研究领域(包括无线定位方向)都会碰到参数估计的问题,这时常常会看到克拉美罗界 (Cramér ...