惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
宝玉的分享
宝玉的分享
腾讯CDC
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
T
The Exploit Database - CXSecurity.com
T
The Blog of Author Tim Ferriss
V
V2EX
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Y
Y Combinator Blog
P
Proofpoint News Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
T
Threat Research - Cisco Blogs
B
Blog
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 司徒正美
H
Help Net Security
C
Cisco Blogs
C
Check Point Blog
S
Secure Thoughts

博客园 - 潘煜熙

兔年大年30 个税 找拖鞋 uc/OSII 任务切换 Source Insight 使用 MC9S08中断机制 博文阅读密码验证 - 博客园 充70送70 博文阅读密码验证 - 博客园 各大公司面试笔试 - 潘煜熙 - 博客园 4个FPGA工程师面试题目 键消抖 SPI接口时钟配置心得(转载) SPI通信 PCB抄板密技(转) FPGA设计经验教训杂谈(转) 怎样实现访问远程数据库的问题【非局域网内】 win2003系统自动登录两法 多层印制板设计基本要领
任意整数分频模块
潘煜熙 · 2007-10-17 · via 博客园 - 潘煜熙

 1//*******************************************************//
 2//                  任意整数分频模块                     //
 3//*******************************************************//
 4//功能:对输入时钟clock进行F_DIV倍分频后输出clk_out。
 5//其中F_DIV为分频系数,分频系数范围为1~2^n (n=F_DIV_WIDTH)
 6//若要改变分频系数,改变参数F_DIV或F_DIV_WIDTH到相应范围即可。
 7//若分频系数为偶数,则输出时钟占空比为50%;
 8//若分频系数为奇数,则输出时钟占空比取决于输入时钟占空比和分
 9//频系数(当输入为50%时,输出也是50%)。
10//--------------------------------------------------------
11//奇数倍分频:三倍分频的时序图如下所示。
12//               1     2     3     4     5    6
13//clock      |--|__|--|__|--|__|--|__|--|__|--|__|
14//clk_p_r    |_____|-----------|_____|-----------|
15//clk_n_r    ---|_____|-----------|_____|---------
16//clk_out    |________|--------|________|--------|
17
18module  int_div(clock,clk_out);
19
20//I/O口声明
21input    clock;                    //输入时钟
22output    clk_out;                //输出时钟
23
24//内部寄存器
25reg    clk_p_r;                    //上升沿输出时钟
26reg clk_n_r;                    //下降沿输出时钟
27reg[F_DIV_WIDTH - 1:0] count_p;    //上升沿脉冲计数器
28reg[F_DIV_WIDTH - 1:0] count_n;    //下降沿脉冲计数器
29
30//参数--分频系数
31parameter F_DIV = 48000000;        //分频系数<<<<-----修改这里
32parameter F_DIV_WIDTH = 32;     //分频计数器宽度
33
34wire full_div_p;                //上升沿计数满标志
35wire half_div_p;                //上升沿计数半满标志
36wire full_div_n;                //下降沿计数满标志
37wire half_div_n;                //下降沿计数半满标志
38
39//判断计数标志位置位与否
40assign full_div_p = (count_p < F_DIV - 1);
41assign half_div_p = (count_p < (F_DIV>>1- 1);
42assign full_div_n = (count_n < F_DIV - 1);
43assign half_div_n = (count_n < (F_DIV>>1- 1);
44
45//时钟输出
46assign    clk_out = (F_DIV == 1? 
47                clock : (F_DIV[0? (clk_p_r & clk_n_r) : clk_p_r); //F_DIV[0]用于判断奇偶数
48
49//上升沿脉冲计数
50always @(posedge clock)
51begin
52    if(full_div_p)
53    begin
54        count_p <= count_p + 1'b1;
55        if(half_div_p)
56            clk_p_r <= 1'b0;
57        else
58            clk_p_r <= 1'b1;
59    end
60    else
61    begin
62        count_p <= 0;
63        clk_p_r <= 1'b0;
64    end
65end
66
67//下降沿脉冲计数
68always @(negedge clock)
69begin
70    if(full_div_n)
71    begin
72        count_n <= count_n + 1'b1;
73        if(half_div_n)
74            clk_n_r <= 1'b0;
75        else
76            clk_n_r <= 1'b1;
77    end
78    else
79    begin
80        count_n <= 0;
81        clk_n_r <= 1'b0;
82    end
83end
84
85endmodule
86