五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

數(shù)字IC手撕代碼-分頻器(任意偶數(shù)分頻)

2022-02-23 16:31 作者:不吃蔥的酸菜魚(yú)  | 我要投稿

????????大家好我是酸菜魚(yú),這個(gè)系列著重講解數(shù)字ic或FPGA實(shí)習(xí)面試及秋招面試的高頻手撕代碼題 。

往期題目:

數(shù)字IC手撕代碼-序列檢測(cè)(狀態(tài)機(jī)寫(xiě)法) - 嗶哩嗶哩 (bilibili.com)

數(shù)字IC手撕代碼-序列檢測(cè)(移位寄存器寫(xiě)法) - 嗶哩嗶哩 (bilibili.com)

? ? ? ? 什么是分頻

????????分頻就是生成一個(gè)新時(shí)鐘,該新時(shí)鐘的頻率是原有時(shí)鐘頻率的整數(shù)分之一倍,新周期是原有周期的整數(shù)倍。

????????再簡(jiǎn)單來(lái)說(shuō),讓你手撕一個(gè)四分頻電路,就是寫(xiě)代碼生成一個(gè)周期是原來(lái)四倍的時(shí)鐘,如果手撕一個(gè)三分頻電路,就是寫(xiě)代碼生成一個(gè)周期是原來(lái)三倍的時(shí)鐘。

四分頻波形

????? ? 如上圖所示,就是一個(gè)四分頻電路的波形,四分頻后,新的clk_out的頻率是原來(lái)的1/4,也即周期是原來(lái)的4倍,從圖中可以看到,clk每過(guò)4個(gè)周期,clk_out過(guò)1個(gè)周期。

????????同理三分頻也一樣,但是奇數(shù)分頻會(huì)比偶數(shù)分頻復(fù)雜一些,在奇數(shù)分頻部分會(huì)講。

? ? ??偶數(shù)分頻

????????我們先來(lái)講偶數(shù)分頻。逐步加大難度,先說(shuō)二分頻,怎么實(shí)現(xiàn)二分頻呢?

????????????答:檢測(cè)參考時(shí)鐘,每一個(gè)上升沿到來(lái)時(shí),新的時(shí)鐘翻轉(zhuǎn)一次。即:

always @ (posedge clk or negedge?rstn)
? ? ??if (!rstn)
? ? ? ? ? clk_out?<= 1'b0; ????????? // 復(fù)位置零
????? else
? ? ? ? ? clk_out <= !clk_out; ????// 否則q信號(hào)翻轉(zhuǎn)

二分頻波形

? ? ? ? 搞定!從圖中可以看到,clk_out每過(guò)兩個(gè)clk時(shí)鐘上升沿就flip-flop一次,這樣一個(gè)clk_out的周期就是clk周期的兩倍,也即實(shí)現(xiàn)了二分頻。

????????那如果是任意偶數(shù)分頻呢,這就得數(shù)經(jīng)過(guò)了多少上升沿,如果是四分頻,那就每過(guò)兩個(gè)時(shí)鐘上升沿(兩周期),新信號(hào)flip-flop一次,flip-flop兩次為新信號(hào)的一個(gè)周期,即是周期是原時(shí)鐘的四倍。同理,8分頻就是每數(shù)4個(gè)上升沿,flip-flop一次,以此類(lèi)推,可以實(shí)現(xiàn)任意偶數(shù)分頻了。

????????下面拿8分頻舉例,貼出所有代碼以及testbench。

代碼:

八分頻代碼

testbench:

八分頻 testbench

????得到的八分頻的波形如下:

八分頻波形

????????從波形我們可以看到,clk每過(guò)4個(gè)時(shí)鐘上升沿,clk_out 翻轉(zhuǎn)一次,和設(shè)計(jì)的一樣,在RTL文件中的 number 是可以修改的,可以改成任意偶數(shù)從而實(shí)現(xiàn)任意偶數(shù)分頻(改為2也行,即每次時(shí)鐘上升沿到來(lái)時(shí),if語(yǔ)句一直滿(mǎn)足,clk_out 翻轉(zhuǎn)一次,每次時(shí)鐘上升沿翻轉(zhuǎn)一次,就是我們之前提到的二分頻。)注意翻轉(zhuǎn)的時(shí)間點(diǎn)是number/2-1!因?yàn)楫?dāng)cnt 是從0開(kāi)始計(jì)數(shù)的,

當(dāng)cnt == 3 時(shí)(八分頻舉例),cnt被重置到0,持續(xù)一個(gè)clk。

? ? 檢測(cè)到上升沿,cnt再持續(xù)一個(gè)clk,cnt=1。

再檢測(cè)到上升沿,cnt再持續(xù)一個(gè)clk,cnt=2。

再檢測(cè)到上升沿,cnt再持續(xù)一個(gè)clk,cnt=3。

再檢測(cè)到上升沿,此時(shí)cnt=3,cnt又被置零。

解釋clk_out為什么在number/2-1時(shí)flip的圖

????????更加直觀一些可以把cnt作為div_8這個(gè)module的輸出信號(hào),查看cnt隨時(shí)間的變化值,找感覺(jué)。

占空比分析:我們上面寫(xiě)的任意偶數(shù)分頻代碼的占空比都是50%,實(shí)際上面試手撕代碼不會(huì)讓你50%占空比,那怎么辦?

????????答:進(jìn)行計(jì)數(shù),對(duì)于一個(gè)八分頻,開(kāi)始就把時(shí)鐘設(shè)為高電平,我用cnt 計(jì)數(shù)到兩個(gè)時(shí)鐘上升沿后再把它拉低,計(jì)數(shù)到7后cnt 拉低 時(shí)鐘拉高,這樣就實(shí)現(xiàn)了兩個(gè)周期高,六個(gè)周期低,占空比為2/8 即 25% 的八分頻。

????????本篇專(zhuān)欄到此結(jié)束,感興趣的小伙伴可以關(guān)注我, 一起學(xué)習(xí),備戰(zhàn)秋招。

??



數(shù)字IC手撕代碼-分頻器(任意偶數(shù)分頻)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
镇雄县| 类乌齐县| 金阳县| 华蓥市| 精河县| 甘泉县| 姜堰市| 调兵山市| 九龙坡区| 东莞市| 历史| 拜城县| 乃东县| 云龙县| 永寿县| 大姚县| 高淳县| 宜阳县| 建平县| 留坝县| 大石桥市| 潜江市| 沁源县| 固安县| 大方县| 万载县| 都昌县| 济宁市| 罗源县| 安吉县| 福建省| 钟祥市| 海淀区| 孝感市| 门源| 云梦县| 玉溪市| 正蓝旗| 庆云县| 勐海县| 儋州市|