0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

奇數(shù)分頻如何得到呢? 解讀奇數(shù)分頻和邏輯分析儀(ILA)的使用

454398 ? 來源:CSDN博主 ? 作者:ChuanjieZhu ? 2020-12-28 15:49 ? 次閱讀

前言:

偶數(shù)分頻容易得到:N倍偶數(shù)分頻,可以通過由待分頻的時鐘觸發(fā)計數(shù)器計數(shù),當(dāng)計數(shù)器從0計數(shù)到N/2-1時,輸出時鐘進(jìn)行翻轉(zhuǎn),并給計數(shù)器一個復(fù)位信號,使得下一個時鐘從零開始計數(shù)。以此循環(huán)下去。

奇數(shù)分頻如何得到呢?

第一部分 奇數(shù)分頻

奇數(shù)分頻方法:

N倍奇數(shù)分頻,首先進(jìn)行上升沿觸發(fā)進(jìn)行模N計數(shù),計數(shù)到(N-1)/2時輸出時鐘翻轉(zhuǎn),同時進(jìn)行下降沿觸發(fā)的模N計數(shù),計數(shù)到(N-1)/2時輸出時鐘翻轉(zhuǎn)時,進(jìn)行輸出時鐘時鐘翻轉(zhuǎn)。兩個占空比非50%的n分頻時鐘相或運算,得到占空比為50%的奇數(shù)N分頻時鐘。

或者使用“相與”,方法與上相同,只是翻轉(zhuǎn)的數(shù)值變?yōu)椋∟-2)/2。

三分頻的Verilog實現(xiàn):
module Divider_Multiple(
input clk_i,
input rst_n_i,
output div2_o,
output div3_o
);

reg div2_o_r;
always@(posedge clk_i or negedge rst_n_i) //二分頻
begin
if(!rst_n_i)
div2_o_r else
div2_o_r end
reg [1:0] pos_cnt;
reg [1:0] neg_cnt;
always@(posedge div2_o_r or negedge rst_n_i) //上升沿計數(shù)
begin
if(!rst_n_i)
pos_cnt else if(pos_cnt==2'd2)
pos_cnt else
pos_cnt end
always@(negedge div2_o_r or negedge rst_n_i) //下降沿計數(shù)
begin
if(!rst_n_i)
neg_cnt else if(neg_cnt==2'd2)
neg_cnt else
neg_cnt end
reg div3_o_r0;
reg div3_o_r1;
always@(posedge div2_o_r or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r0 else if(pos_cnt div3_o_r0 else
div3_o_r0 end
always@(negedge div2_o_r or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r1 else if(neg_cnt div3_o_r1 else
div3_o_r1 end
assign div2_o=div2_o_r;
assign div3_o=div3_o_r0 | div3_o_r1; //相或
endmodule

仿真

仿真文件:
module Divider_Multiple_tb;
// Inputs
reg clk_i;
reg rst_n_i;
// Outputs
wire div2_o;
wire div3_o;
// Instantiate the Unit Under Test (UUT)
Divider_Multiple uut (
.clk_i(clk_i),
.rst_n_i(rst_n_i),
.div2_o(div2_o),
.div3_o(div3_o)
);
initial
begin
// Initialize Inputs4
clk_i = 0;
rst_n_i = 0;
// Wait 100 ns for global reset to finish
#96;
rst_n_i=1;
end
always
begin
#5 clk_i=~clk_i;
end
endmodule

vivado仿真結(jié)果:

至此,第一部分結(jié)束。

第二部分 邏輯分析儀

增加邏輯分析儀:

首先為了配合手里的zc702板子,修改了一下輸入時鐘;為了觀察分頻信號,增加了一個2Hz的信號,將其連接在led上,可以看見led閃爍。

邏輯分析儀的使用分三步走:

1. 在設(shè)計文件中,在要抓取的信號定義前添加:
(*make_debug="true"*)

2. 導(dǎo)入ILA的IP核:

雙擊添加的IP,在General Options里設(shè)置探針數(shù)(信號組數(shù))和采樣深度(利用BRAM存儲的),在Probe Ports里設(shè)置信號位寬:


OK之后,點擊Generate。

在IP Source里雙擊模板,將例化模板復(fù)制到設(shè)計文件中,填好對應(yīng)的待測信號:

3. 添加約束-->生成比特文件-->下載-->添加觸發(fā)信號-->抓取。

為了閱讀的連貫性,貼出修改后的代碼:
module Divider_Multiple(
input clk_p,
input clk_n,
input rst_n_i,
output div2_o,
output div3_o,
output div2hz_o
);

IBUFGDS IBUFGDS_inst (
.O(clk_i), // Clock buffer output
.I(clk_p), // Diff_p clock buffer input (connect directly to top-level port)
.IB(clk_n) // Diff_n clock buffer input (connect directly to top-level port)
);
(*make_debug="true"*)wire div2_o;
(*make_debug="true"*)wire div3_o;
(*make_debug="true"*)wire div2hz_o;
reg div2_o_r;
always@(posedge clk_i or negedge rst_n_i) //二分頻
begin
if(rst_n_i)
div2_o_r else
div2_o_r end

reg [1:0] pos_cnt;
reg [1:0] neg_cnt;

always@(posedge div2_o_r or negedge rst_n_i) //上升沿計數(shù)
begin
if(rst_n_i)
pos_cnt else if(pos_cnt==2'd2)
pos_cnt else
pos_cnt end

always@(negedge div2_o_r or negedge rst_n_i) //下降沿計數(shù)
begin
if(rst_n_i)
neg_cnt else if(neg_cnt==2'd2)
neg_cnt else
neg_cnt end

reg div3_o_r0;
reg div3_o_r1;

always@(posedge div2_o_r or negedge rst_n_i)
begin
if(rst_n_i)
div3_o_r0 else if(pos_cnt div3_o_r0 else
div3_o_r0 end
always@(negedge div2_o_r or negedge rst_n_i)
begin
if(rst_n_i)
div3_o_r1 else if(neg_cnt div3_o_r1 else
div3_o_r1 end

reg div2hz_o_r;
reg [25:0] div2hz_cnt;
always@(posedge clk_i or negedge rst_n_i)
begin
if(rst_n_i)
div2hz_cnt else if(div2hz_cnt div2hz_cnt else
div2hz_cnt end
always@(posedge clk_i or negedge rst_n_i)
begin
if(rst_n_i)
div2hz_o_r else if(div2hz_cnt==26'd24_999999 || div2hz_cnt==26'd49_999999)
div2hz_o_r else
div2hz_o_r end

assign div2_o=div2_o_r;
assign div3_o=div3_o_r0 | div3_o_r1; //相或
assign div2hz_o=div2hz_o_r;

ila_0 ila_0_0 ( //邏輯分析儀的例化
.clk(clk_i), // input wire clk
.probe0(div2hz_o), // input wire [0:0] probe0
.probe1({div2_o,div3_o}) // input wire [3:0] probe1
);

endmodule

約束文件如下:
set_property PACKAGE_PIN D18 [get_ports {clk_p}]
set_property IOSTANDARD LVDS_25 [get_ports {clk_p}]
set_property PACKAGE_PIN C19 [get_ports {clk_n}]
set_property IOSTANDARD LVDS_25 [get_ports {clk_n}]

set_property PACKAGE_PIN G19 [get_ports {rst_n_i}]
set_property IOSTANDARD LVCMOS18 [get_ports {rst_n_i}]
#GPIO PMOD1
set_property PACKAGE_PIN E15 [get_ports {div2_o}]
set_property IOSTANDARD LVCMOS18 [get_ports {div2_o}]
set_property PACKAGE_PIN D15 [get_ports {div3_o}]
set_property IOSTANDARD LVCMOS18 [get_ports {div3_o}]
set_property PACKAGE_PIN W17 [get_ports {div2hz_o}]
set_property IOSTANDARD LVCMOS18 [get_ports {div2hz_o}]

下載到fpga之后,邏輯分析儀的界面會自動打開,各個區(qū)域的功能如下,先添加觸發(fā)信號,可以右鍵點擊添加,也可以點擊window-->debug probe將信號拖拽至“觸發(fā)信號”區(qū)域:

總結(jié):

信號運算得到新的信號。沒有仿真就沒有發(fā)言權(quán)。

編輯:hfy


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2248

    瀏覽量

    94178
  • 邏輯分析儀
    +關(guān)注

    關(guān)注

    3

    文章

    213

    瀏覽量

    23094
  • BRAM
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    10926
  • 復(fù)位信號
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    6285
收藏 人收藏

    評論

    相關(guān)推薦

    需要講解一個占空比50%的奇數(shù)分頻器的原理

    本帖最后由 haozix521 于 2013-10-4 20:42 編輯 想做一個占空比50%的奇數(shù)分頻器,但是不是很了解這其中的意思。網(wǎng)上的資料都是這樣講的“對于實現(xiàn)占空比為50%的N倍奇數(shù)分頻
    發(fā)表于 10-04 20:35

    利用Verilog實現(xiàn)奇數(shù)分頻

    ),然后再進(jìn)行二分頻得到。得到占空比為50%的奇數(shù)分頻。下面講講進(jìn)行小數(shù)分頻的設(shè)計方法第三,小
    發(fā)表于 06-14 06:30

    如何利用Verilog實現(xiàn)奇數(shù)分頻

    ),然后再進(jìn)行二分頻得到。得到占空比為50%的奇數(shù)分頻。下面講講進(jìn)行小數(shù)分頻的設(shè)計方法第三,小
    發(fā)表于 07-09 09:11

    基于Verilog的FPGA分頻設(shè)計

    給出了一種基于FPGA的分頻電路的設(shè)計方法.根據(jù)FPGA器件的特點和應(yīng)用范圍,提出了基于Verilog的分頻方法.該方法時于在FPGA硬件平臺上設(shè)計常用的任意偶數(shù)分頻奇數(shù)分頻、半整
    發(fā)表于 11-09 09:49 ?355次下載
    基于Verilog的FPGA<b class='flag-5'>分頻</b>設(shè)計

    此通用電路可以實現(xiàn)任意奇數(shù)分頻電路

    最近正在準(zhǔn)備找工作,由于是做FPGA開發(fā),所以verilog實現(xiàn)技術(shù)分頻電路是一道經(jīng)常出現(xiàn)的題目,三分頻,五分頻電路等等;經(jīng)過一下午時間總結(jié)出了一個通用電路,可以實現(xiàn)任意奇數(shù)分頻電路。
    發(fā)表于 02-09 14:21 ?2656次閱讀

    分頻器的作用是什么 半整數(shù)分頻器原理圖分析

    分頻器主要分為偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻和小數(shù)分頻,如果在設(shè)計過程中采用參數(shù)化設(shè)計,就可以隨時改變參量以
    發(fā)表于 02-01 01:28 ?1.6w次閱讀
    <b class='flag-5'>分頻</b>器的作用是什么 半整<b class='flag-5'>數(shù)分頻</b>器原理圖<b class='flag-5'>分析</b>

    基于復(fù)雜可編程邏輯器件和VHDL語言實現(xiàn)半整數(shù)分頻器的設(shè)計

    在數(shù)字系統(tǒng)設(shè)計中,根據(jù)不同的設(shè)計需要,經(jīng)常會遇到偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻等,有的還要求等占空比。在基于cpld(復(fù)雜可編程邏輯器件)的數(shù)字系統(tǒng)設(shè)計中,很容易實現(xiàn)由計數(shù)器或其級聯(lián)構(gòu)
    發(fā)表于 06-26 09:36 ?1010次閱讀
    基于復(fù)雜可編程<b class='flag-5'>邏輯</b>器件和VHDL語言實現(xiàn)半整<b class='flag-5'>數(shù)分頻</b>器的設(shè)計

    奇數(shù)分頻器的介紹和實現(xiàn)

    因為偶數(shù)分頻器過于簡單,所以我們從奇數(shù)分頻器開始說起8 01 奇數(shù)分頻器 ? ? 假設(shè)我們要實現(xiàn)一個2N+1分頻分頻器,就需要高電平占N+
    的頭像 發(fā)表于 03-12 15:44 ?6288次閱讀
    <b class='flag-5'>奇數(shù)分頻</b>器的介紹和實現(xiàn)

    數(shù)分頻器的設(shè)計

    所謂“分頻”,就是把輸入信號的頻率變成成倍數(shù)地低于輸入頻率的輸出信號。數(shù)字電路中的分頻器主要是分為兩種:整數(shù)分頻和小數(shù)分頻。其中整數(shù)分頻又分
    的頭像 發(fā)表于 03-23 15:06 ?1538次閱讀
    偶<b class='flag-5'>數(shù)分頻</b>器的設(shè)計

    奇數(shù)分頻器的設(shè)計

    上一篇文章介紹了偶分頻,今天來介紹一下奇數(shù)分頻器的設(shè)計。
    的頭像 發(fā)表于 03-23 15:06 ?968次閱讀
    <b class='flag-5'>奇數(shù)分頻</b>器的設(shè)計

    數(shù)分頻器的設(shè)計

    前面分別介紹了偶數(shù)和奇數(shù)分頻(即整數(shù)分頻),接下來本文介紹小數(shù)分頻
    的頭像 發(fā)表于 03-23 15:08 ?1006次閱讀
    小<b class='flag-5'>數(shù)分頻</b>器的設(shè)計

    數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻和小數(shù)分頻詳解

    初學(xué) Verilog 時許多模塊都是通過計數(shù)與分頻完成設(shè)計,例如 PWM 脈寬調(diào)制、頻率計等。而分頻邏輯往往通過計數(shù)邏輯完成。本節(jié)主要對偶數(shù)分頻
    的頭像 發(fā)表于 03-29 11:38 ?4507次閱讀
    偶<b class='flag-5'>數(shù)分頻</b>、<b class='flag-5'>奇數(shù)分頻</b>、半整<b class='flag-5'>數(shù)分頻</b>和小<b class='flag-5'>數(shù)分頻</b>詳解

    數(shù)分頻/奇數(shù)分頻/分數(shù)分頻詳解

     時鐘分頻電路(分頻器)在IC設(shè)計中經(jīng)常會用到,其目的是產(chǎn)生不同頻率的時鐘,滿足系統(tǒng)的需要。 比如一個系統(tǒng),常規(guī)操作都是在1GHz時鐘下完成,突然要執(zhí)行一個操作涉及到模擬電路,所需時間是us量級的,顯然用1GHz(周期是1ns)的時鐘進(jìn)行操作是不合適的。
    的頭像 發(fā)表于 04-25 14:46 ?8358次閱讀
    偶<b class='flag-5'>數(shù)分頻</b>/<b class='flag-5'>奇數(shù)分頻</b>/分<b class='flag-5'>數(shù)分頻</b>詳解

    基于Verilog的分數(shù)分頻電路設(shè)計

    上一篇文章時鐘分頻系列——偶數(shù)分頻/奇數(shù)分頻/分數(shù)分頻,IC君介紹了各種分頻器的設(shè)計原理,其中分數(shù)分頻
    的頭像 發(fā)表于 04-25 14:47 ?1587次閱讀
    基于Verilog的分<b class='flag-5'>數(shù)分頻</b>電路設(shè)計

    鎖相環(huán)整數(shù)分頻和小數(shù)分頻的區(qū)別是什么?

    鎖相環(huán)整數(shù)分頻和小數(shù)分頻的區(qū)別是什么? 鎖相環(huán)(PLL)是一種常用的電子電路,用于將輸入的時鐘信號與參考信號進(jìn)行同步,并生成輸出信號的一種技術(shù)。在PLL中,分頻器模塊起到關(guān)鍵作用,可以實現(xiàn)整數(shù)
    的頭像 發(fā)表于 01-31 15:24 ?2473次閱讀