verilog写的三分频
2014-02-25 16:42
399 查看
笔试的时候有一道题目要求设计三分频电路,晕,想了半天想不出来,回到宿舍里才动手写了出来,如下:
其实3分频电路有很多种方法,这里选用其中一种:先求出两个占空比为1/3的频率波形,注意分别为上升沿触发和下降沿触发,最后两个信号波形进行或运算,代码如下:
module san(
input clk,
input rst,
output clk_3
);
reg [1:0]cnt;
reg [1:0]cnt1;
reg clk1;
reg clk2;
always@(posedge clk or negedge rst)
if(!rst) begin cnt<=2'b00;end
else if(cnt==2'b10) cnt<=2'b00;
else cnt<=cnt+2'b01;
always@(negedge clk or negedge rst)
if(!rst) begin cnt1<=2'd0;end
else if(cnt1==2'b10) cnt1<=2'b00;
else cnt1<=cnt1+2'b01;
always@(posedge clk or negedge rst)
if(!rst) clk1<=1'b1;
else if(cnt==2'b00||cnt==2'b10) clk1=~clk1;
else clk1<=clk1;
always@(negedge clk or negedge rst)
if(!rst) clk2<=1'b1;
else if(cnt1==2'b00||cnt1==2'b10) clk2<=~clk2;
else clk2<=clk2;
assign clk_3=clk1|clk2;
endmodule
功能仿真波形图:
时序仿真波形图:
写程序的时候有些需要注意的地方:1、不要在不同的always块中对同一个变量进行赋值操作;
2、注意在哪个计数器状态进行时钟的翻转。
其实3分频电路有很多种方法,这里选用其中一种:先求出两个占空比为1/3的频率波形,注意分别为上升沿触发和下降沿触发,最后两个信号波形进行或运算,代码如下:
module san(
input clk,
input rst,
output clk_3
);
reg [1:0]cnt;
reg [1:0]cnt1;
reg clk1;
reg clk2;
always@(posedge clk or negedge rst)
if(!rst) begin cnt<=2'b00;end
else if(cnt==2'b10) cnt<=2'b00;
else cnt<=cnt+2'b01;
always@(negedge clk or negedge rst)
if(!rst) begin cnt1<=2'd0;end
else if(cnt1==2'b10) cnt1<=2'b00;
else cnt1<=cnt1+2'b01;
always@(posedge clk or negedge rst)
if(!rst) clk1<=1'b1;
else if(cnt==2'b00||cnt==2'b10) clk1=~clk1;
else clk1<=clk1;
always@(negedge clk or negedge rst)
if(!rst) clk2<=1'b1;
else if(cnt1==2'b00||cnt1==2'b10) clk2<=~clk2;
else clk2<=clk2;
assign clk_3=clk1|clk2;
endmodule
功能仿真波形图:
时序仿真波形图:
写程序的时候有些需要注意的地方:1、不要在不同的always块中对同一个变量进行赋值操作;
2、注意在哪个计数器状态进行时钟的翻转。
相关文章推荐
- SQL on Hadoop系统的最新进展
- 迷宫算法
- Android 系列:如何解决安卓SDK无法下载Package的问题
- Ubuntu下为Firefox安装Adobe Flash Player
- platform_driver_register()--如何match之后调用probe
- Linux环境下修改MySQL端口方法:
- php @符号的使用
- 【转】sed 高级用法
- Linux环境下修改MySQL端口方法: 分类: database ubuntu 测试 2014-02-25 16:42 3334人阅读 评论(0) 收藏
- include与jsp:include与s:action与s:include与iframe用法汇总
- 查看Eclipse 运行java程序时使用的命令
- 关于Sprite Kit的碰撞检测
- 4G高屏占比 华为MediaPad X1平板电脑发布
- 静多态,动多态对比
- 我的老公编程有瘾
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- android视频监控的解决方案探讨
- Oracle 分析函数详解(Analytic Functions)--概念部分
- 实现使用struts2框架访问jar包中的jsp方案
- 1+1*2+1*2*3+1*2*3*n数列的求和算法