Verilog常用分频器的实现

上传人:小** 文档编号:77068182 上传时间:2022-04-19 格式:DOC 页数:3 大小:56KB
收藏 版权申诉 举报 下载
Verilog常用分频器的实现_第1页
第1页 / 共3页
Verilog常用分频器的实现_第2页
第2页 / 共3页
Verilog常用分频器的实现_第3页
第3页 / 共3页
资源描述:

《Verilog常用分频器的实现》由会员分享,可在线阅读,更多相关《Verilog常用分频器的实现(3页珍藏版)》请在装配图网上搜索。

1、Verilog 常用分频器的实现分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。 在许多电子设备中 如电子钟、频率合成器等,需要各种不同频率的信号协同工作, 常用的方法是以稳定度高的 晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。 早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器) 逐渐取代了正弦分频器。下面以 Verilog HDL 语言为基础介绍占空比为50%的分频器。1. 偶分频偶分频比较简单,假设为 N分频,只需要计数到N/2仁然后时钟翻转、计数清零,如此循环就可以得到N (偶)分频。代码如下。module f

2、p_even(clk_out,clk_in,rst);input clk_in,rst;output clk_out;reg 7:0 cnt;reg clk_out;define N 6always(posedge clk_in or negedge rst)beginif(!rst)begincnt=0;clk_out=0;endelse beginif(cn t=N/2 1)beginclk_out=clk_out;cnt=0;endelse cnt=cnt+1 ;endendendmodule2. 奇分频实现奇数分频(N)分频,分别用上升沿到(N 1) /2,再计数到N 1 ;用下降沿计

3、数 到(N 1) /2,再计数到N 1。得到两个波形,然后把它们相或即可得到N分频。代码如下。module fp_odd(clk_in,clk_out,rst,clk_neg,clk_pos);input clk_in,rst;output clk_out,clk_pos,clk_neg;reg 7:0 cnt_pos,cnt_neg;reg clk_pos,clk_neg;define N 5always(posedge clk_in or negedge rst) / 从零到 N 1 不停地循环计数(上升沿) beginif(!rst) cnt_pos=0;else if(cnt_pos=

4、N 1) cnt_pos=0;else cnt_pos=cnt_pos+1;endalways(posedge clk_in or negedge rst)beginif(!rst) clk_pos=0;else if( cnt_pos=(N 1)/2 ) clk_pos=clk_pos;else if(c nt_pos=N 1) clk_pos=clk_pos;endalways(negedge clk_in or negedge rst) / 从零到 N 1 不停地循环计数(下降沿) beginif(!rst) cnt_neg=0;elseif(cnt_neg=N 1)cnt_neg=0;

5、else cnt_neg=cnt_neg+1;endalways(negedge clk_in or negedge rst)beginif(!rst) clk_neg=0;else if( cnt_neg=(N 1)/2 ) clk_neg=clk_neg;else if(cnt_neg=N 1) clk_neg=clk_neg;endassignclk_out=clk_neg|clk_pos;endmodule3. 任意占空比的任意分频在 verilog 程序设计中,我们往往要对一个频率进行任意分频,而且占空比也有一定的 要求。 现在在前面两个实验的基础上做一个简单的总结,实现对一个频率的

6、任意占空比的分频。比如:FPGA系统时钟是50MHz,而我们要产生的频率是880H z,那么我们而要对系统时钟进行分频。很容易想到用计数的方法来分频:50000000/800 = 56818。显然这个数字不 是 2 的整幂次方,那么我们可以设定一个参数,让它到 56818 的时候重新计数就可以实现 了。程序如下:module div(clk, clk_div);input clk;output clk_div;reg 15:0 counter;always (posedge clk) if(counter=56817) counter = 0; else counter = counter+1

7、;assign clk_div = counter15;endmodule下面我们来算一下它的占空比:我们清楚地知道,这个输出波形在 counter 为 0 到 32767 的 时候为低,在 32767 到 56817 的时候为高,占空比为 40%多一些,如果我们需要占空比为 50%,那么怎么办呢?不用急,慢慢来。我们再设定一个参数, 使它为 56817 的一半, 使达到它的时候波形翻转, 那不就完了吗?呵 呵,再看看:module div(clk, clk_div);input clk;output clk_div;reg 14:0 counter;always (posedge clk)

8、if(counter=28408) counter = 0; else counter = counter+1;reg clk_div;always (posedge clk) if(counter=28408) clk_div = clk_div;endmodule占空比是不是神奇地变成50%了呢?呵呵。继续让我们来看如何实现任意占空比,比如还是由50 M分频产生880 Hz,而分频得到的信号的占空比为 30%。56818 X 30%=17045module div(clk,reset,clk_div,counter);input output output reg regclk,reset; clk_div;15:0 counter; 15:0 counter; clk_div;always (posedge clk)if(!reset) counter = 0; else if(counter=568 1 7) counter =0; else counter = counter+1 ; always (posedge clk)if(!reset) clk_div = 0; else if(counter17045) clk_div = 1;else clk_div = 0; endmodule

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!