用VHDL設計的任意頻率分頻器
Sometimes I need to generate a clock at a lower frequency than the main clock driving the FPGA. If the ratio of the frequencies is a power of 2, the logic is easy. If the ratio is an integer N, then a divide-by-N counter is only a little harder. But if the ratio isn"t an integer, a little (and I mean a little) math is required. Note that the new clock will have lots of jitter: there"s no escaping that. But it will have no drift, and for some applications that"s what counts. If you have a clock A at frequency a, and want to make a clock B at some lower frequency b (that is, b a), then something like: d = 0; forever { Wait for clock A. if (d 1) { d += (b/a); } else { d += (b/a) - 1; /* getting here means tick for clock B */ } } but comparison against zero is easier, so subtract 1 from d: d = 0; forever { Wait for clock A. if (d 0) { d += (b/a); } else { d += (b/a) - 1; /* getting here means tick for clock B */ } } want an integer representation, so multiply everything by a: d = 0; forever { Wait for clock A. if (d 0) { d += b; } else { d += b - a; /* getting here means tick for clock B */ } } For example. I just bought a bargain batch of 14.1523MHz oscillators from BG but I need to generate a 24Hz clock. So a=14152300 and b=24: d = 0; forever { Wait for clock A. if (d 0) { d += 24; } else { d += 24 - 14152300; /* getting here means tick for clock B */ } } For a hardware implementation I need to know how many bits are needed for d: here it"s 24 bits to hold the largest value (-14152300) plus one more bit for the sign. In VHDL this looks like: signal d, dInc, dN : std_logic_vector(24 downto 0); process (d) begin if (d(24) = "1") then dInc = 0000000000000000000011000; -- (24) else dInc = 1001010000000110110101100; -- (24 - 14152300) end if; end process; dN = d + dInc; process begin wait until A"event and A = "1"; d = dN; -- clock B tick whenever d(24) is zero end process;
關鍵詞: VHDL任意頻率分頻器
您可能也感興趣:
為您推薦
廈門開展銀行保險業消保教育宣傳周活動 促進行業數字化創新
友邦保險去年業績亮眼 新業務價值上升18%至33.66億美元
陜西省將加大財政投入力度 推動農業保險持續“擴面”
排行
最近更新
- 用VHDL設計的任意頻率分頻器
- 光纖光纜及其器件基礎概括
- ICE將從指數中刪除所有俄羅斯和白俄羅斯債券
- 隱性債務監管高壓態勢不變 強調防范“處置風險的風險”
- 數據:交易所以太坊流出量達到2022年峰值
- “國潮”風暴下,李寧營收首破兩百億
- 你家肖戰代言這一年,李寧猛賺40億,一雙襪子要賣110元
- 哪些肢體接觸算超出曖昧
- 互聯網醫院線上義診
- 4月1日起 昆明將門診費用納入職工醫保統籌基金支
- 事發石家莊!36歲男子不胖也不常喝酒,卻查出脂肪肝!咋回事?
- 教授病危,百名師生涌向獻血車!后續來了……
- 腫瘤患者吃膏方需要注意些什么?
- 良之隆·2022第十屆中國食材電商節6月8日-10日復展通知
- 一份涼皮相當于幾碗米飯
- 涼面和涼皮的熱量哪個低
- 涼皮和涼面哪個容易胖
- 接觸性出血是什么原因造成的
- 開灤總醫院肝膽外科團隊29小時內連做4臺腹腔鏡下胰十二指腸切除術
- 3月18日上海各區確診病例、無癥狀感染者居住地信息公布
- 中國睡眠研究報告:僅35%國人睡夠8小時
- 中山大學附屬口腔醫院許躍“觸網”科普,守護口腔健康
- 力量訓練或許比跑步更有助睡眠
- 修手機、辦卡的時候,您可得長個心眼兒
- 直播吸粉無底線,線下公安局里見!
- 公安機關嚴厲打擊偷拍偷窺黑色產業鏈條
- 網安女警的下班業余
- 言歸“證”傳,上“警快辦” | 駕駛證業務辦理看過來
- 反詐小課堂 | 在嗎?我出事了,要借錢!
- 我為群眾辦實事 | 善意會接力!被民警幫助過的人再次找到了...