VHDL-任意分频器(50%占空比)
前言
去年寒假前我的一个亲戚问我如何做一个五分频的分频器。我想这还不简单,不就是个计数器吗,但是发现并没有那么简单,因为偶数分频器根据上升沿计数就可以了,但是奇数分频器也可以,但是没法做到50%占空比。今天课上老师完美的解决了这个问题。
偶分频
我们之前学习过计数器,偶分配无非就是个计数器嘛,用信号做中间变量要注意他是滞后变值,所以修改的时候要考虑清除。这点没什么好说的直接上代码。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity Test isgeneric(constant N:integer:=6);port(signal clk:in std_logic;signal cout:out std_logic);
end Test;
architecture even of Test issignal temp:integer:=0;constant half:integer:=N/2;
beginprocess(clk)beginif rising_edge(clk) thentemp<=temp+1;if temp<half thencout<='1';elsif temp<N-1 thencout<='0';elsetemp<=0;cout<='0';end if;end if;end process;
end even;
这里我们可以实现一个偶数分频。这个想必大家都没问题,那么我们继续看奇数分频
奇数分频
我们很容易想到奇数分频的50%的占空比肯定是和上升沿和下降沿都有关系,那么我们对上升沿和下降沿都做计数,来看一下效果。
我们发现只有当两个方向的状态均为0时才为0
因为正方向看,他会有半个时钟周期的延迟,这样就可以做到3.5个周期的高电平了。那么剩下的自然就是低电平。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div_any isgeneric(constant N:integer:=5);port(signal clk:in std_logic;signal cout:out std_logic);
end div_any;
architecture even of div_any issignal tempA,tempB:integer:=0;signal coutA,coutB:std_logic;constant half:integer:=N/2;
beginprocess(clk)beginif rising_edge(clk,coutA,coutB) thentempA<=tempA+1;if tempA<half thencoutA<='1';elsif tempA<N-1 thencoutA<='0';elsetempA<=0;coutA<='0';end if;elsif falling_edge(clk) thentempB<=tempB+1;if tempB<half thencoutB<='1';elsif tempB<N-1 thencoutB<='0';elsetempB<=0;coutB<='0';end if;end if;cout<=coutA or coutB;end process;
end even;
任意分频
那么如何实现任意分频呢?
我们可以发现,如果当前是偶数,那么直接与上升沿的一样就可以了。不过我们这里做一下特判,1的情况。
下面代码通过输入分频值来更改分频状态。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div_any isport(signal clk:in std_logic;signal scaler:in integer range 0 to 63;signal clk_out,clk_f,clk_r:out std_logic);
end div_any;
architecture DIV of div_any issignal f_count:integer range 0 to 63:=0;signal r_count:integer range 0 to 63:=0;signal half:integer;signal even:integer;signal clk_f_temp,clk_r_temp:std_logic;
beginhalf<=scaler/2;even<= scaler rem 2;with even*scaler selectclk_out<=clk_r_temp when 0,clk when 1,clk_f_temp or clk_r_temp when others;process(clk,scaler)beginif rising_edge(clk) thenr_count<=r_count+1;if r_count<half thenclk_r_temp<='1';elsif r_count<scaler-1 thenclk_r_temp<='0';elseclk_r_temp<='0';r_count<=0;end if;elsif falling_edge(clk) thenf_count<=f_count+1;if f_count<half thenclk_f_temp<='1';elsif f_count<scaler-1 thenclk_f_temp<='0';elseclk_f_temp<='0';f_count<=0;end if;end if;end process;clk_f<=clk_f_temp;clk_r<=clk_r_temp;
end DIV;
By-Round Moon
VHDL-任意分频器(50%占空比)相关推荐
- 分频器——(任意奇分频(50%占空比、非50%占空比),任意偶分频,任意小数分频)
分频器定义: 在数字系统的设计中经常会碰到需要使用多个时钟的情况.时钟信号的产生通常具有两种方法,一种是使用PLL(Phase Locked Loop,锁相环),可生成倍频.分频信号:另一种则是使用硬 ...
- 50%占空比的3分频器(奇数分频)
要求:设计一个50%占空比的3分频器 总结:设计奇数N分频的核心思想是,用计数器产生两个(N/2+1)/N占空比的时钟信号(分别在系统时钟的上升沿和下降沿产生).在将这两个信号做组合逻辑运算(与运算) ...
- FPGA 任意分频器设计
结合网上的经验,自己写了写偶.奇.任意分频器的程序. 偶分频器 /************************* Date:2018.8.14*************************** ...
- (96)分频器设计(任意分频器)
(96)分频器设计(任意分频器) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)分频器设计(任意分频器) 5)技术交流 6)参考资料 2 FPGA入门与提升课程介绍 ...
- (05)VHDL实现分频器
(05)VHDL实现分频器 1.1 目录 1)目录 2)FPGA简介 3)VHDL简介 4)VHDL实现分频器 5)结语 1.2 FPGA简介 FPGA(Field Programmable Gate ...
- 数字IC秋招手撕代码(二)50%占空比的三分频
数字IC秋招手撕代码(二)50%占空比的三分频 题目 设计思路 与逻辑分频 代码 或逻辑分频 代码 异或逻辑分频 代码 题目 用verilog实现三分频电路,要求输出50%占空比 设计思路 如果不限制 ...
- 题目:用Verilog实现三分频电路,要求输出50%占空比。
题目:用Verilog实现三分频电路,要求输出50%占空比. module Div_three(input clk,input rst_n,output div_three ); reg [1:0] ...
- 五分频电路(50%占空比)
五分频电路(50%占空比) 设计代码 `timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 20:28:43 05/1 ...
- 奇偶分频电路设计(任意占空比、50%占空比)
一.概述 分频电路一般就是以输入源时钟为参考,将其进行降频输出:分频可以使用锁相环时钟资源实现,也可以计数为基础,进行分频设计.本文主要记录后者的相关问题. 二.偶分频 1.一些概念 分频数:即降频倍 ...
- FPGA基础设计(二):任意分频器(奇数,偶数,小数)
分频器 前言 分频原理 偶数分频 6分频 代码 tb 仿真波形 奇数分频 仿真波形 代码 tb 小数分频 说明 半整数分频:N+0.5 仿真波形 代 ...
最新文章
- MW150UH驱动程序Linux,水星MW150UH无线网卡驱动
- 【深度学习】GPU选型调研!3090依旧是性价比之王
- java 动手动脑之父子继承
- 在linux中检测go语言,Linux AIDE(文件完整性检测)-Go语言中文社区
- ETL第一篇(Kettle Spoon) 初遇
- java开发之分页查询
- nlp基础—9.条件随机场模型(CRF算法)
- 对apache中并发控制参数prefork理解和调优
- js如何获取php中的变量的类型,js获取变量的类型
- 矩阵的逆和矩阵的转置运算公式对比
- 可靠性 可用性 可维护性
- Excel宏的录制与调用
- 【JAVA】java递归测试考拉兹猜想/冰雹猜想
- 会议室管理系统jsp和mysql_基于jsp+mysql+servlet的JSP会议-会议室管理系统
- 加载调用本地百度地图资源,附地图下载器及黑龙江省1-16级瓦片地图,加载显示marker
- 2019第二届中国智慧零售终端大会
- 7-33 地下迷宫探索 (30 分)
- Windows7 Home高级 64 中文版 + TortoiseSVN 64 英文版 + SVN Server 32
- linux内置的cron定时任务
- (织梦cms)dedecms5.7注入和上传0day