在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 3936|回复: 8

[活动] 每日一题0704

[复制链接]
发表于 2012-7-4 10:40:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
1、设计一个占空比1:1的三分频电路?
2、Design a state machine to divide the clock by 3/2.
    Snap4.jpg
欢迎大家积极回帖讨论,最佳答案者30信元奉上~~~
最佳答案明天揭晓~~
发表于 2012-7-4 11:05:22 | 显示全部楼层
貌似这个应该叫做1.5分频?
发表于 2012-7-4 15:29:51 | 显示全部楼层
真恼人啊,弄个VISIO老是弄不好。晚点儿再来回答。
囧rz
发表于 2012-7-4 22:07:48 | 显示全部楼层
本帖最后由 fiysben 于 2012-7-5 11:16 编辑

1. 占空比为1:1的三分频电路其实很好做,利用原始clk的上升沿下降沿分别去踩,实现一个占空比为非1:1的3分频电路,然后把两个分别由始终上升沿和下降沿生成的3分频电路的输出相或(与)即可得到占空比为1:1的3分频电路。

2. 1.5分频的电路实现需要借助占空比为非1:1的3分频电路。取三个时钟:原始时钟、占空比为2:1的3分频时钟以及与第二个时钟相比延迟了一个原始时钟的占空比为2:1的3分频时钟。(第二个和第三个时钟完全一样,只是第三个时钟与第二个比相位延迟了一个原始时钟)
在此情况下,可以把这三个时钟分别作为变量,制作卡诺图。化简后得到out_clk=clk·clk2+(-clk1·-clk2·-clk),(表达式并不唯一,看你想要得到的结果跟几个clk的相位关系了)然后电路实现就不说了。(得到的1.5分频并非占空比为1:1的,1:1的想了一下貌似实现不了)

好吧,今晚搞visio搞得郁闷无比,终于激活了。不过懒得画图了,要是大家有什么问题,可以问,有空我补图吧!

不过目测明天lz应该会放出正确答案啦~~
---------------------------------
第一题其实还可以用小数分频的方法。
发表于 2012-7-4 22:34:51 | 显示全部楼层
回复 4# fiysben
第一题:用verilog 实现

    module div3(clk,clk_3);
        input clk;
        output clk_3;       
       
        reg [1:0] countp;
        reg [1:0] countn;
        reg clk_3p;
        reg clk_3n;
       
        always@(posedge clk) begin
                if(countp<=2'd1) begin
                        clk_3p<=1'b1;
                        countp<=countp+2'd1;
                end
                else if(countp==2'd2) begin
                        clk_3p<=1'b0;
                        countp<=2'd0;
                end
        end
       
        always@(negedge clk) begin
                if(countn<=2'd1) begin
                        clk_3n<=1'b1;
                        countn<=countn+2'd1;
                end
                else if(countn==2'd2) begin
                        clk_3n<=1'b0;
                        countn<=2'd0;
                end
        end
       
        assign clk_3=(clk_3p&&clk_3n)?1'b1:1'b0;
endmodule
发表于 2012-7-5 07:45:31 | 显示全部楼层

50mmm

50mmm
发表于 2012-7-5 14:56:22 | 显示全部楼层
第二题:
原理用相位累加器原理  F0=F*K/N    K=F0*N/F    (F0是输出频率,K是频率控制字,N是32位计数器)
代码如下:
module clk_generator
(
parameter FREQ_WORD = 32'd2863025199 //33.33MHZ )
(
input clk, //50MHz input rst_n, //clock reset output reg clk_out );
//-------------------------------------- reg [31:0] max_value;
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
max_value <= 1'b0;
else
max_value <= max_value + FREQ_WORD;
end
//-------------------------------------- always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
clk_out <= 1'b0;
else
begin
if(max_value < 32'h7FFF_FFFF)
clk_out <= 1'b0;
else
clk_out <= 1'b1;
end
end
endmodule
发表于 2012-7-5 16:32:24 | 显示全部楼层
回复 6# leasor


    这个我看懂了!
发表于 2012-7-5 21:49:11 | 显示全部楼层
回复 8# willyeing


   这个是结果,不是解答。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 06:38 , Processed in 0.035058 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表