FPGA 5分频程序
2015-12-02 09:54
337 查看
一、FPGA实现奇数倍分频,以5分频为例,代码如下:
module div(MCLK,DIV5_CLK,DIV0,DIV1,COUNT0);
input MCLK; //时钟输入
output DIV5_CLK; //5分频输出
output DIV0,DIV1; //(N-1)/2分频输出
reg DIV0;
reg DIV1;
parameter N = 5; // 设置分频数N(奇数)
parameter M = 2; // (N-1)/2
output [2:0]COUNT0; //计数器计数寄存器
reg[2:0] COUNT0 = 0;
reg[2:0] COUNT1 = 0;
always@(posedge MCLK) //MCLK上升沿分频
begin
if(COUNT0==2)begin
DIV0=0;
end else if(COUNT0==5)begin
COUNT0=0;
DIV0=1;
end
COUNT0=COUNT0+1;
end
always@(negedge MCLK) //MCLK下降沿分频
begin
if(COUNT1==2)begin
DIV1=0;
end else if(COUNT1==5)begin
DIV1=1;
COUNT1=0;
end
COUNT1=COUNT1+1;
end
assign DIV5_CLK=DIV0|DIV1; //两路(N-1)/2分频输出相或
endmodule
仿真图如下所示:
module div(MCLK,DIV5_CLK,DIV0,DIV1,COUNT0);
input MCLK; //时钟输入
output DIV5_CLK; //5分频输出
output DIV0,DIV1; //(N-1)/2分频输出
reg DIV0;
reg DIV1;
parameter N = 5; // 设置分频数N(奇数)
parameter M = 2; // (N-1)/2
output [2:0]COUNT0; //计数器计数寄存器
reg[2:0] COUNT0 = 0;
reg[2:0] COUNT1 = 0;
always@(posedge MCLK) //MCLK上升沿分频
begin
if(COUNT0==2)begin
DIV0=0;
end else if(COUNT0==5)begin
COUNT0=0;
DIV0=1;
end
COUNT0=COUNT0+1;
end
always@(negedge MCLK) //MCLK下降沿分频
begin
if(COUNT1==2)begin
DIV1=0;
end else if(COUNT1==5)begin
DIV1=1;
COUNT1=0;
end
COUNT1=COUNT1+1;
end
assign DIV5_CLK=DIV0|DIV1; //两路(N-1)/2分频输出相或
endmodule
仿真图如下所示:
相关文章推荐
- 报表开发工具Finereport移动端app js接口列表【全】
- java同步机制:synchronized
- can not resolve symbol R
- 学习网址
- JBOSS4.2 JVM配置-主要解决内存溢出
- LibSVM学习(四)——逐步深入LibSVM
- 阿牛的EOF牛肉串
- ffmpeg的HEVC解码源代码分析(一)整体框架
- Lowest Common Ancestor of a Binary Search Tree 寻找最低共同祖先
- 谈EXPORT_SYMBOL使用
- js之生命周期坑
- java.util.concurrent.CountDownLatch
- 實作解析:微信開發重點摘要 (5) - 獲取用戶訊息
- WebView 性能优化
- 问题:oracle 不等于;结果:Oracle中的不等于号
- Web前端慢加密
- LibSVM学习(三)——LibSVM使用规范
- ld: -pie can only be used when targeting iOS 4.2 or later
- 在webview中addJavascriptInterface,js调用java函数打包出现不响应,即使对混淆处理
- Android系统init.rc分析