【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)
| 四社區(qū)聯(lián)合力薦!近500篇數(shù)字IC精品文章收錄! |
| 【數(shù)字IC精品文章收錄】學(xué)習(xí)路線·基礎(chǔ)知識(shí)·總線·腳本語(yǔ)言·芯片求職·EDA工具·低功耗設(shè)計(jì)Verilog·STA·設(shè)計(jì)·驗(yàn)證·FPGA·架構(gòu)·AMBA·書籍 |
Verilog偶數(shù)分頻
- 一、前言
- 二、偶數(shù)分頻題目
- 三、偶數(shù)分頻電路原理
- 3.1 寄存器級(jí)聯(lián)法
- 3.2 計(jì)數(shù)器法
- 四、寄存器級(jí)聯(lián)法分頻電路
- 4.1 二分頻|四分頻|八分頻RTL設(shè)計(jì)
- 4.2 分頻電路的Testbench
- 4.3 仿真波形
- 4.4 結(jié)果分析
- 五、計(jì)數(shù)器法分頻電路
- 5.1 六分頻RTL設(shè)計(jì)
- 5.2 分頻電路的testbench
- 5.3 仿真波形
- 5.4結(jié)果分析
- 六、不需要滿足50%占空比的偶數(shù)分頻
一、前言
本系列旨在提供100%準(zhǔn)確的數(shù)字IC設(shè)計(jì)/驗(yàn)證手撕代碼環(huán)節(jié)的題目,原理,RTL設(shè)計(jì),Testbench和參考仿真波形,每篇文章的內(nèi)容都經(jīng)過仿真核對(duì)。快速導(dǎo)航鏈接如下:
1.奇數(shù)分頻
2.偶數(shù)分頻
3.半整數(shù)分批
4.小數(shù)/分?jǐn)?shù)分頻
5.序列檢測(cè)器
6.模三檢測(cè)器
7.飲料機(jī)
8.異步復(fù)位,同步釋放
9.邊沿檢測(cè)(上升沿,下降沿,雙邊沿)
10.全加器,半加器
11.格雷碼轉(zhuǎn)二進(jìn)制
12.單bit跨時(shí)鐘域(打兩拍,邊沿同步,脈沖同步)
13.奇偶校驗(yàn)
14.偽隨機(jī)數(shù)生成器[線性反饋移位寄存器]
15.同步FIFO
16.無毛刺時(shí)鐘切換電路
應(yīng)當(dāng)說,手撕代碼環(huán)節(jié)是面試流程中既重要又簡(jiǎn)單的一個(gè)環(huán)節(jié),跟軟件類的崗位相比起來,數(shù)字IC的手撕代碼題目固定,數(shù)量有限,屬于整個(gè)面試中必得分的一個(gè)環(huán)節(jié),在這個(gè)系列以外,筆者同樣推薦數(shù)字IC求職者使用“HdlBits”進(jìn)行代碼的訓(xùn)練
鏈接如下
HDLBits — Verilog Practice
二、偶數(shù)分頻題目
1.實(shí)現(xiàn)二分頻電路,滿足50%占空比。
2.實(shí)現(xiàn)四分頻電路,滿足50%占空比。
3.實(shí)現(xiàn)任意偶數(shù)分頻,滿足50%占空比。
4.實(shí)現(xiàn)任意偶數(shù)分頻,不需要滿足占空比。
三、偶數(shù)分頻電路原理
3.1 寄存器級(jí)聯(lián)法
寄存器級(jí)聯(lián)法能實(shí)現(xiàn)2^N的偶數(shù)分頻,具體是采用寄存器結(jié)構(gòu)的電路,每當(dāng)時(shí)鐘上升沿到來的時(shí)候輸出結(jié)果進(jìn)行翻轉(zhuǎn),以此來實(shí)現(xiàn)偶數(shù)分頻,具體的時(shí)序圖如下所示
3.2 計(jì)數(shù)器法
計(jì)數(shù)器法可以實(shí)現(xiàn)任意偶數(shù)分頻,以六分頻為例,電路需要實(shí)現(xiàn)的是:計(jì)數(shù)器從0開始計(jì)數(shù)至2,當(dāng)clock上升沿取到clock=2時(shí),輸出clock進(jìn)行翻轉(zhuǎn),具體的時(shí)序圖如下
若我們想實(shí)現(xiàn)任意任意偶數(shù)分頻,如10/12分頻,我們只需要將計(jì)數(shù)器的最大值設(shè)定為(10/2-1)或(12/2-1)或(N/2-1),既可以實(shí)現(xiàn)相關(guān)的分頻電路
四、寄存器級(jí)聯(lián)法分頻電路
4.1 二分頻|四分頻|八分頻RTL設(shè)計(jì)
module even_divide(clk,rst_n,clk2,clk4,clk8);input clk; input rst_n; output reg clk2; output reg clk4; output reg clk8;always@(posedge clk or negedge rst_n) begin if(!rst_n) clk2 <= 1'b0; else clk2 <= !clk2; endalways@(posedge clk2 or negedge rst_n) begin if(!rst_n) clk4 <= 1'b0; else clk4 <= !clk4; endalways@(posedge clk4 or negedge rst_n) begin if(!rst_n) clk8 <= 1'b0; else clk8 <= !clk8; endendmodule4.2 分頻電路的Testbench
module even_divide_tb();reg clk; reg rst_n; wire clk2; wire clk4; wire clk8;even_divide u1(.clk(clk),.rst_n(rst_n),.clk2(clk2),.clk4(clk4),.clk8(clk8));always #5 clk = ~clk;initial begin clk = 0; rst_n = 1; #15 rst_n = 0; #25 rst_n = 1;#300; endendmodule4.3 仿真波形
4.4 結(jié)果分析
可以發(fā)現(xiàn),clk2為2分頻電路輸出,ck4為4分頻電路輸出,clk8為8分頻電路輸出,結(jié)果滿足需求
五、計(jì)數(shù)器法分頻電路
5.1 六分頻RTL設(shè)計(jì)
module odd_divide(clk,rst_n,clk6);input clk; input rst_n; output reg clk6;parameter N = 3'd6; reg [2:0] count;always@(posedge clk or negedge rst_n) begin if(!rst_n | count == N/2 -1) count <= 3'd0; else count <= count + 1'd1; endalways@(posedge clk or negedge rst_n) begin if(!rst_n) clk6 <= 3'b0; else if (count == N/2-1) clk6 <= ~clk6; else clk6 <= clk6; end endmodule5.2 分頻電路的testbench
`timescale 1ns/ 1ps module odd_divide_tb();reg clk; reg rst_n; wire clk6;odd_divide u1(.clk(clk),.rst_n(rst_n),.clk6(clk6));always #5 clk = ~clk;initial begin clk = 0; rst_n = 1; #15 rst_n = 0; #25 rst_n = 1;#300; endendmodule5.3 仿真波形
5.4結(jié)果分析
可以發(fā)現(xiàn):所需六分頻電路得到實(shí)現(xiàn),此處略去count計(jì)數(shù)器,當(dāng)其等于2的時(shí)候clk6實(shí)現(xiàn)翻轉(zhuǎn)。
六、不需要滿足50%占空比的偶數(shù)分頻
通常來說,滿足50%占空比的要求更嚴(yán)格,假如對(duì)于占空比沒有要求,我們也可以使用狀態(tài)機(jī)去來實(shí)現(xiàn)六分頻電路
定義六個(gè)狀態(tài):狀態(tài)0時(shí)clk的輸出為0,狀態(tài)1,2,3,4,5時(shí)clk的輸出為1,也可以同樣的實(shí)現(xiàn)六分頻電路,以此類推,可以實(shí)現(xiàn)任意偶數(shù)分頻的電路,并通過狀態(tài)的輸出為1,控制特殊占空比
總結(jié)
以上是生活随笔為你收集整理的【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python深度学习6之神经网络
- 下一篇: java多文件文件压缩加密下载