当前位置: 首页>C语言>正文

任意小數分頻

任意小數分頻

任意小數分頻

題目描述
請設計一個可以實現任意小數分頻的時鐘分頻器,比如說8.7分頻的時鐘信號
注意rst為低電平復位
提示:
其實本質上是一個簡單的數學問題,即如何使用最小公倍數得到時鐘周期的分別頻比。
設小數為nn,此處以8.7倍分頻的時鐘周期為例。
首先,由于不能在硬件上進行小數的運算(比如2.1個時鐘這種是不現實的,也不存在3.3個寄存器),小數分頻不能做到分頻后每個時鐘周期都是源時鐘的nn倍,也無法實現占空比為1/2,因此,考慮小數分頻,其實現方式應當為53個clkout時鐘周期是10個clkin時鐘周期的8.7倍。

信號示意圖:
在這里插入圖片描述
題目解讀
其實本質上是一個簡單的數學問題,即如何使用最小公倍數得到時鐘周期的分別頻比。
設小數為nn,此處以8.7倍分頻的時鐘周期為例。

首先,由于不能在硬件上進行小數的運算(比如2.1個時鐘這種是不現實的,也不存在3.3個寄存器),小數分頻不能做到分頻后每個時鐘周期都是源時鐘的nn倍,也無法實現占空比為1/2,因此,考慮小數分頻,其實現方式應當為87個clkout時鐘周期是10個clkin時鐘周期的8.7倍。

所以很簡單,根據提示,我們可以進行如下假設:首先設置有兩個整數分頻電路,一個是奇數一個是偶數,設其分頻比為a和b,然后其分別的時鐘占N/M個周期。則我們可以得到:
aN+bM = 87
N+M = 10
如果使用 8 和 9分頻,則有:
8N+9M = 87
N+M = 10
因此 M為7, N為3。

具體步驟:
1)設計一個計數次數87的計數器,即0-86
2)分別生成8分頻和9分頻的計數器,計數次數分別為0-6和0-2
3)輸出波形根據總計數器和8、9分頻計數器的數值控制輸出脈沖翻轉

`timescale 1ns/1nsmodule div_M_N(input  wire clk_in,input  wire rst,output wire clk_out
);
parameter M_N = 8'd87; 
parameter c89 = 8'd24; // 8/9時鐘切換點
parameter div_e = 5'd8; //偶數周期
parameter div_o = 5'd9; //奇數周期reg [6:0] cnt;
reg [3:0] cnt_e;
reg [3:0] cnt_o;
reg clk_MN;
assign clk_out = clk_MN;//總計數器
always @(posedge clk_in or negedge rst) beginif(!rst)cnt <= 6'b0;else beginif(cnt == M_N - 1'b1)cnt <= 6'b0;elsecnt <= cnt + 1'b1;end 
end always @(posedge clk_in or negedge rst) begin if(!rst) begincnt_e <= 4'b0;cnt_o <= 4'b0;end else if(cnt<=c89-1'b1) begincnt_o <= 4'd0;if(cnt_e == div_e - 1'b1)cnt_e <= 4'd0;elsecnt_e <= cnt_e + 1'b1;end else if(cnt>c89-1'b1) begincnt_e <= 4'd0;if(cnt_o == div_o - 1'b1)cnt_o <= 4'd0;elsecnt_o <= cnt_o + 1'b1;end
endalways @(posedge clk_in or negedge rst) beginif(!rst)clk_MN <= 1'b0;else beginif(cnt<c89) beginif(cnt_e == 4'd0 || cnt_e == div_e/2)clk_MN <= ~clk_MN;endif(cnt>=c89) beginif(cnt_o == 4'd0 || cnt_o == (div_o - 1'b1)/2)clk_MN <= ~clk_MN;endend 
endendmodule

https://www.zydui.com/af602UG8CDQ9TC1YB.html
>

相关文章:

  • 詳解PyTorch中的contiguous
  • PyTorch中的contiguous解讀
  • Pytorch中contiguous()函數理解
  • ios自定義UITabBar-仿寫掌上英雄聯盟的UITabBar
  • 基于Cocos2d-x的英雄聯盟皮膚選擇菜單
  • lol-登陸英雄聯盟出錯
  • JS中雙層for循環執行順序
  • 關于for循環執行順序
  • 上古卷軸5boss計算機丟失,上古卷軸5常見BUG解決辦法
  • 上古世紀服務器維護真情禮,4月9日例行維護懷舊服合服公告
  • 塔羅牌張數
  • 工程管理中的工程技術
  • 銳派出品:LOL新年特輯S4各類細節之下路篇
  • 藍城兄弟Q4業績背后,垂直社區具備多少想象力?
  • Mac OS啟動服務優化高級篇(launchd tuning)
  • #Geek Point# 為什么現在要去印度看一看?
  • vm 流程運行mac os_什么是“商務”流程,為什么在我的Mac上運行?
  • # 陌生人社交產品:需求、困境與破局之道
  • mac 不受信任在哪里更改_什么是受信任的,為什么它可以在Mac上運行?
  • 車行軌跡分類實踐
  • 智慧車行預約小程序 v9.1
  • i12藍牙耳機充電倉怎么看充滿電_車行藍牙耳機價格高性價比的選擇
  • 車行平安
  • 論文閱讀——《基于卷積神經網絡的車行環境多類障礙物檢測與識別》
  • 飛槳開發者創意薈:PaddleHub一鍵部署,AI創意實現原來如此簡單
  • eclipse左側欄目即包資源管理器怎么打開
  • 卷毛機器人符文_卷毛S6娜美輔助天賦 娜美輔助符文天賦S6最新
  • 天賦介紹
  • 蘋果怎么沒有4g信號還無服務器,不顯示4g信號怎么回事?蘋果手機不顯示4g信號的解決方法...
  • c4D體積生成和Quad Remesher重新拓撲減面插件