FPGA学习笔记. 二分频和三分频
二分频和三分频
二分频:将输入频率CLK分为原来的 1/2 。
实现:在每次CLK的上升沿或下降沿将输出翻转。
三分频:
1/3占空比。
实现:可使用上升沿或下降沿计数生成输出。需要一个两位计数器。
- 第一个CLK,输出Q翻转,计数器加1;
- 第二个CLK,输出Q不变,计数器加1;
- 第三个CLK,输出Q翻转,计数器清零。
50%占空比。
实现:将上升沿生成的Q1和下降沿生成的Q2两个1/3占空比相或。
code:
module DividerMultiple(
input clk_i,
input rst_n_i,
output div2_o,
output div3_o,
output [:]div3p_o,
output [:]div3n_o
// output [1:0]div3_r,
// output div3_75
);
//***************
reg div2_o_r;
//****************
reg [:] pos_cnt;
reg [:] neg_cnt;
reg div3_o_r0;
reg div3_o_r1;
//reg div3p_o;
//reg div3n_o;
//reg [1:0]div3_r;
//reg div3_75;
//******************* //always@(posedge clk_i or negedge rst_n_i)
//begin
// if(!rst_n_i)begin
// div3_r <= 2'b00;
// div3_75 <= 1'b0;
// end
// else begin
// if(div3_r == 2'b00) begin
// div3_75 <= ~div3_75;
// div3_r <= div3_r + 1'b1;
// end
// else if(div3_r == 2'b10) begin
// div3_75 <= ~div3_75;
// div3_r <= 2'b00;
// end
// else
// div3_r <= 2'b00;
// end
//end //two divided-frequency
always@(posedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)begin
div2_o_r <= 'b0;
end
else begin
div2_o_r <= ~div2_o_r;
end
end //three divided-frequency
always@(posedge clk_i or negedge rst_n_i) //上升沿计数
begin
if(!rst_n_i)begin
pos_cnt<='b00;
end
else begin
if(pos_cnt=='d2)
pos_cnt<='b00;
else
pos_cnt<=pos_cnt+'b1;
end
end
always@(negedge clk_i or negedge rst_n_i) //下降沿计数
begin
if(!rst_n_i)begin
neg_cnt<='b00;
end
else begin
if(neg_cnt=='d2) begin
neg_cnt<='b00;
end
else
neg_cnt<=neg_cnt+'b1;
end
end
always@(posedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r0<='b0;
else
if(pos_cnt<'d1) div3_o_r0<=1'b1;
else div3_o_r0<='b0;
end
always@(negedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r1<='b0;
else
if(neg_cnt<'d1) div3_o_r1<=1'b1;
else div3_o_r1<='b0;
end assign div2_o = div2_o_r;
assign div3_o = div3_o_r0 | div3_o_r1; //相或
assign div3p_o = div3_o_r0;
assign div3n_o = div3_o_r1; endmodule
testbench
module Divider_Multiple_tb;
// Inputs
reg clk_i;
reg rst_n_i;
// Outputs
wire div2_o;
wire div3_o;
wire [:]div3p_o;
wire [:]div3n_o;
// Instantiate the Unit Under Test (UUT)
DividerMultiple uut (
.clk_i(clk_i),
.rst_n_i(rst_n_i),
.div2_o(div2_o),
.div3_o(div3_o) ,
.div3p_o(div3p_o) ,
.div3n_o(div3n_o)
);
initial begin
// Initialize Inputs4
clk_i = ;
rst_n_i = ;
// Wait 100 ns for global reset to finish
#; rst_n_i=;
end
always
begin
# clk_i=~clk_i;
end
endmodule
仿真结果:

FPGA学习笔记. 二分频和三分频的更多相关文章
- 【Unity Shaders】学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert
[Unity Shaders]学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert 转载请注明出处:http://www.cnblogs.com/-867259 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换 学习目标 理解如何用矩阵表示线性变换和仿射变换: 学习在 ...
- FPGA学习笔记(二)——FPGA学习路线及开发流程
###### [该随笔部分内容转载自小梅哥] ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -& ...
- 20145316许心远《Java学习笔记》第三周总结
20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...
- MySQL实战45讲学习笔记:第三十九讲
一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧 ...
- Java菜鸟学习笔记--数组篇(三):二维数组
定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...
- 【EF6学习笔记】(三)排序、过滤查询及分页
本篇原文地址:Sorting, Filtering, and Paging 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根据自己的理解做了 ...
- 学习笔记-AngularJs(三)
学习笔记-AngularJs(二)写了个所有程序语言入门时都必须要写的Hello World,那么从现在开始做那个之前说过的互联网大佬介绍的学习例子,当然这里开始会慢慢按照之前说过的目录来搭建这个学习 ...
- FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)
FPGA设计的是数字逻辑,在开始用HDL设计之前,需要先了解一下基本的数字逻辑设计-- 一门抽象的艺术. 现实世界是一个模拟的世界,有很多模拟量,比如温度,声音······都是模拟信号,通过对模拟信号 ...
随机推荐
- PAT甲题题解-1052. Linked List Sorting (25)-排序
三个注意点: 1.给出的n个节点并不一定都在链表中 2.最后一组样例首地址即为-1 3.输出地址的时候一直忘记前面要补0... #include <iostream> #include & ...
- Python学习-将Python3.3.4还原成Python2.6版本
http://blog.csdn.net/dream_angel_z/article/details/45724515
- idea 使用教程
最智能的IDE IDEA相对于eclipse来说最大的优点就是它比eclipse聪明.聪明到什么程度呢?我们先来看几个简单的例子. 智能提示重构代码 如果你写的代码过于复杂,或者有更好的方式来替代你写 ...
- ElasticSearch 2 (38) - 信息聚合系列之结束与思考
ElasticSearch 2 (38) - 信息聚合系列之结束与思考 摘要 版本 elasticsearch版本: elasticsearch-2.x 内容 本小节涵盖了许多基本理论以及很多深入的技 ...
- 关于vue-eslint自动补全代码,以及自动生成雪碧图
一.配置eslint module.exports={ "printWidth": 240, //一行的字符数,如果超过会进行换行,默认为80 "tabWidth&quo ...
- [转帖] wordpress 的安装过程
https://blog.csdn.net/qq_34364668/article/details/78116473 下载Wordpress wget http://wordpress.org/lat ...
- Java == ,equals 和 hashcode 的区别和联系(阿里面试)
今天阿里的人问我 equals 与hashcode的区别,我答不上来, 仔细查了一下,做了总结: (1) == 这是Java 比较内存地址,就是内存中的对象: java中的==是比较两个对象在JVM中 ...
- code review & github
code review & github code review https://github.com/features/code-review/ https://github.com/mar ...
- MT【111】画图估计
评:此类方程是超越方程,一般情况下无法解出具体的解,常见手段:1.画图 2.猜根.此处可以取特殊值a=2.5,b=3.5,容易知道此时$x=2.5\in(2,3)$
- 【刷题】BZOJ 4945 [Noi2017]游戏
Description http://www.lydsy.com/JudgeOnline/upload/Noi2017D2.pdf Solution 字符串里的'x'看起来很烦,于是考虑枚举这些'x' ...