使用D觸發(fā)器實(shí)現(xiàn)8分頻(verilog)
前言
最近閑來無聊玩了一陣子FPGA,其中遇到一個(gè)經(jīng)典的問題,就是用verilog實(shí)現(xiàn)8分頻器。發(fā)現(xiàn)自己并不是很熟練,所以就以blog的形式記錄一下,同時(shí)也分享給大家。
所需要的前提條件:由verilog語言基礎(chǔ),知道D觸發(fā)器的邏輯
第一步:visio畫出8分頻器的電路
要知道,幾乎所有的編程語言都由模塊化的思想包含在內(nèi),硬件描述語言也不例外。想要構(gòu)建一個(gè)8分頻器,首先需要了解它是怎么實(shí)現(xiàn)的。
8分頻器的實(shí)現(xiàn)原理: 它是由三個(gè)由D觸發(fā)器簡(jiǎn)單改造的二分頻器級(jí)聯(lián)構(gòu)成的,即每經(jīng)過一級(jí)輸入的時(shí)鐘頻率變?yōu)樵瓉淼亩种?/p>
二分頻器
將一個(gè)D觸發(fā)器的Q非門與D連接就形成了一個(gè)二分頻電路
三個(gè)二分頻器級(jí)聯(lián)
將三個(gè)二分頻器級(jí)聯(lián)即可得到8分頻器
第二步 按圖施工,用verilog語言描述搭建好的電路
二分頻器搭建
在DIV_2 圖中我們發(fā)現(xiàn),它的內(nèi)部是一個(gè)D_FF(D觸發(fā)器)。DIV_2將D和Q_NOTE_GATE連接到了一起。那條線就變成了一個(gè)模塊內(nèi)部的線,所以在verilog文件中我們要聲明一個(gè)中間變量,在這里我取名為QD。
module DIV_2(
input wire clk,
input wire rst_n,
output wire Q
);
wire QD; //聲明的中間變量
//例化
D_FF D_FF(
. clk(clk),
. rst_n(rst_n),
. D(QD),
. Q(Q),
. Q_NOT_GATE(QD)
);
endmodule
D觸發(fā)器(D_FF)
因?yàn)閷?shí)例化了D_FF,而且D_FF較為簡(jiǎn)單,我直接把D_FF的verilog描述源碼貼在這里。
module D_FF(
input wire clk,
input wire rst_n,
input wire D,
output reg Q,
output wire Q_NOT_GATE
);
always @(posedge clk or negedge rst_n) begin
if (~rst_n) //如果rst_n 是低電平,則Q置零
Q <= 1'b0;
else
Q <= D;
end
assign Q_NOT_GATE = ~Q;
endmodule
8分頻器的實(shí)現(xiàn)
根據(jù)模塊化思想,我們只需要在DIV_8.v中(調(diào)用)實(shí)例化三次2分頻器即可。
module DIV_8(
input wire clk,
input wire rst_n,
output wire rs
);
//聲明中間變量
wire Q1;
wire Q2;
//實(shí)例化三次
DIV_2 DIV_2_1(
. clk(clk),
. rst_n(rst_n),
. Q(Q1)
);
DIV_2 DIV_2_2(
. clk(Q1),
. rst_n(rst_n),
. Q(Q2)
);
DIV_2 DIV_2_3(
. clk(Q2),
. rst_n(rst_n),
. Q(rs)
);
endmodule
第三步 搭建tb文件測(cè)試程序是否正確
已知8分頻器的功能是將輸入的clk信號(hào)頻率變?yōu)樵瓉淼陌朔种?,所以我們看到的理想波形如?/p>
文章來源:http://www.zghlxwxcb.cn/news/detail-512357.html
搭建tb文件
`timescale 1ns/1ps
module DIV_8_tb();
reg clk;
reg rst_n;
wire rs;
initial begin
clk = 1'b0;
rst_n = 1'b0;
#100.3
rst_n = 1'b1;
end
always #10 clk = ~clk ;
DIV_8 DIV_8(
.clk(clk),
.rst_n(rst_n),
.rs(rs)
);
endmodule
驗(yàn)證仿真波形
文章來源地址http://www.zghlxwxcb.cn/news/detail-512357.html
到了這里,關(guān)于使用D觸發(fā)器實(shí)現(xiàn)8分頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!