日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)

發布時間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
芯片設計驗證社區·芯片愛好者聚集地·硬件相關討論社區·數字verifier星球
四社區聯合力薦!近500篇數字IC精品文章收錄
【數字IC精品文章收錄】學習路線·基礎知識·總線·腳本語言·芯片求職·EDA工具·低功耗設計Verilog·STA·設計·驗證·FPGA·架構·AMBA·書籍

Verilog偶數分頻

    • 一、前言
    • 二、偶數分頻題目
    • 三、偶數分頻電路原理
      • 3.1 寄存器級聯法
      • 3.2 計數器法
    • 四、寄存器級聯法分頻電路
      • 4.1 二分頻|四分頻|八分頻RTL設計
      • 4.2 分頻電路的Testbench
      • 4.3 仿真波形
      • 4.4 結果分析
    • 五、計數器法分頻電路
      • 5.1 六分頻RTL設計
      • 5.2 分頻電路的testbench
      • 5.3 仿真波形
      • 5.4結果分析
    • 六、不需要滿足50%占空比的偶數分頻

一、前言

本系列旨在提供100%準確的數字IC設計/驗證手撕代碼環節的題目,原理,RTL設計,Testbench和參考仿真波形,每篇文章的內容都經過仿真核對。快速導航鏈接如下:

1.奇數分頻
2.偶數分頻
3.半整數分批
4.小數/分數分頻
5.序列檢測器
6.模三檢測器
7.飲料機
8.異步復位,同步釋放
9.邊沿檢測(上升沿,下降沿,雙邊沿)
10.全加器,半加器
11.格雷碼轉二進制
12.單bit跨時鐘域(打兩拍,邊沿同步,脈沖同步)
13.奇偶校驗
14.偽隨機數生成器[線性反饋移位寄存器]
15.同步FIFO
16.無毛刺時鐘切換電路

應當說,手撕代碼環節是面試流程中既重要又簡單的一個環節,跟軟件類的崗位相比起來,數字IC的手撕代碼題目固定,數量有限,屬于整個面試中必得分的一個環節,在這個系列以外,筆者同樣推薦數字IC求職者使用“HdlBits”進行代碼的訓練
鏈接如下
HDLBits — Verilog Practice

二、偶數分頻題目

1.實現二分頻電路,滿足50%占空比。
2.實現四分頻電路,滿足50%占空比。
3.實現任意偶數分頻,滿足50%占空比。
4.實現任意偶數分頻,不需要滿足占空比。

三、偶數分頻電路原理

3.1 寄存器級聯法

寄存器級聯法能實現2^N的偶數分頻,具體是采用寄存器結構的電路,每當時鐘上升沿到來的時候輸出結果進行翻轉,以此來實現偶數分頻,具體的時序圖如下所示

3.2 計數器法

計數器法可以實現任意偶數分頻,以六分頻為例,電路需要實現的是:計數器從0開始計數至2,當clock上升沿取到clock=2時,輸出clock進行翻轉,具體的時序圖如下

若我們想實現任意任意偶數分頻,如10/12分頻,我們只需要將計數器的最大值設定為(10/2-1)或(12/2-1)或(N/2-1),既可以實現相關的分頻電路

四、寄存器級聯法分頻電路

4.1 二分頻|四分頻|八分頻RTL設計

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; endendmodule

4.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; endendmodule

4.3 仿真波形

4.4 結果分析

可以發現,clk2為2分頻電路輸出,ck4為4分頻電路輸出,clk8為8分頻電路輸出,結果滿足需求

五、計數器法分頻電路

5.1 六分頻RTL設計

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 endmodule

5.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; endendmodule

5.3 仿真波形

5.4結果分析

可以發現:所需六分頻電路得到實現,此處略去count計數器,當其等于2的時候clk6實現翻轉。

六、不需要滿足50%占空比的偶數分頻

通常來說,滿足50%占空比的要求更嚴格,假如對于占空比沒有要求,我們也可以使用狀態機去來實現六分頻電路

定義六個狀態:狀態0時clk的輸出為0,狀態1,2,3,4,5時clk的輸出為1,也可以同樣的實現六分頻電路,以此類推,可以實現任意偶數分頻的電路,并通過狀態的輸出為1,控制特殊占空比

總結

以上是生活随笔為你收集整理的【数字IC手撕代码】Verilog偶数分频|题目|原理|设计|仿真(二分频,四分频,六分频,八分频,偶数分频及特殊占空比)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。