在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

基于FPGA的TDC延時(shí)設(shè)計(jì)方案

C29F_xilinx_inc ? 來源:賽靈思 ? 作者:賽靈思 ? 2022-02-16 16:21 ? 次閱讀

1、參考

https://cas.tudelft.nl/fpga_tdc/TDC_basic.html

2、原理

采用FPGA的CARRY4進(jìn)位單元,每個(gè)CARRY4的COUT連接到下一個(gè)CARRY4的CIN,這樣級(jí)聯(lián)起來,形成延時(shí)鏈;每個(gè)COUT做為抽頭輸出到觸發(fā)器,通過本地時(shí)鐘進(jìn)行數(shù)據(jù)采樣。假定每個(gè)延時(shí)鏈的延時(shí)是固定的(最后需要標(biāo)定),可通過采樣值大致估算所測(cè)信號(hào)與本地時(shí)鐘上升沿之間的間隔,當(dāng)?shù)玫竭m當(dāng)?shù)臉?biāo)定后,可獲得較高的精度。

3、當(dāng)前測(cè)試的芯片是XC7K325TFFG900 -2

仿真中的carry4 除第一級(jí)外,其他的carry4輸出到輸入延遲固定都是53ps,但是這是4個(gè)進(jìn)位的延遲時(shí)間,只是vivado仿真工具有限制,且需要后仿真。

基于FPGA的TDC延時(shí)設(shè)計(jì)方案

4、源代碼

頂層

tdc_top.v

module tdc_top#(
parameter STAGE = 200,
parameter GAP_BITS = 8
)(
input wire sg_start,
input wire clk_sys,
input wire reset ,
output wire cs_gap,
output wire [GAP_BITS-1:0] value_gap
);

wire clk_bufg;

clk_wiz_0 clk_wiz_0_inst(
.clk_out1(clk_bufg),
.clk_in1(clk_sys)
);

wire valid_pre;

wire valid;
wire [STAGE-1:0] value_latch;

wire bin_cs;
wire [GAP_BITS-1:0] bin;

wire sg_bufr;

BUFR #(
.BUFR_DIVIDE("BYPASS"), // Values: "BYPASS, 1, 2, 3, 4, 5, 6, 7, 8"
.SIM_DEVICE("7SERIES") // Must be set to "7SERIES"
)
BUFR_INST (
.O(sg_bufr), // 1-bit output: Clock output port
.CE(1'b1), // 1-bit input: Active high, clock enable (Divided modes only)
.CLR(1'b0), // 1-bit input: Active high, asynchronous clear (Divided modes only)
.I(sg_start) // 1-bit input: Clock buffer input driven by an IBUF, MMCM or local interconnect
);

FDCE #(
.INIT(1'b0) // Initial value of register (1'b0 or 1'b1)
)
FDCE_INST2 (
.Q(valid_pre), // 1-bit Data output
.C(clk_bufg), // 1-bit Clock input
.CE(1'b1), // 1-bit Clock enable input
.CLR(1'b0), // 1-bit Asynchronous clear input
.D(sg_bufr) // 1-bit Data input
);

FDCE #(
.INIT(1'b0) // Initial value of register (1'b0 or 1'b1)
)
FDCE_INST3 (
.Q(valid), // 1-bit Data output
.C(clk_bufg), // 1-bit Clock input
.CE(1'b1), // 1-bit Clock enable input
.CLR(1'b0), // 1-bit Asynchronous clear input
.D(valid_pre) // 1-bit Data input
);

line_tdc#(
.STAGE (STAGE)

) line_tdc_inst(
.sg_start (sg_bufr),
.clk_bufg (clk_bufg),
.reset (reset),
.value_latch (value_latch)
);

latch2bin#(
.GAP_BITS (GAP_BITS)
) latch2bin_inst(
.clk_bufg (clk_bufg),
.reset (reset),
.valid (valid),
.value_latch (value_latch),
.bin_cs (cs_gap),
.bin (value_gap)
);

延遲線代碼

line_tdc.v

module line_tdc#(
parameter STAGE = 256
)(
input wire sg_start,
input wire clk_bufg,
input wire reset,
output wire [STAGE - 1:0] value_latch
);

wire [STAGE - 1:0] dat_reg0;
wire [STAGE - 1:0] dat_reg1;

genvar i;
generate
for (i = 0; i if(i == 0) begin :carry4_first
CARRY4 CARRY4_INST (
.CO (dat_reg0[3:0]), // 4-bit carry out
.O (), // 4-bit carry chain XOR data out
.CI (1'b0), // 1-bit carry cascade input
.CYINIT (sg_start), // 1-bit carry initialization
.DI (4'b0000), // 4-bit carry-MUX data in
.S (4'b1111) // 4-bit carry-MUX select input
);
end
if (i > 0) begin :carry4_others
CARRY4 CARRY4_OTHERS (
.CO (dat_reg0[4*(i+1)-1:4*i]), // 4-bit carry out
.O (), // 4-bit carry chain XOR data out
.CI (dat_reg0[4*i-1]), // 1-bit carry cascade input
.CYINIT (1'b0), // 1-bit carry initialization
.DI (4'b0000), // 4-bit carry-MUX data in
.S (4'b1111) // 4-bit carry-MUX select input
);
end
end
endgenerate

genvar j;
generate
for (j = 0; j FDRE #(
.INIT (1'b0) // Initial value of register (1'b0 or 1'b1)
) FDRE_INST0 (
.Q (dat_reg1[j]), // 1-bit Data output
.C (clk_bufg), // 1-bit Clock input
.CE (1'b1), // 1-bit Clock enable input
.R (reset), // 1-bit Synchronous reset input
.D (dat_reg0[j]) // 1-bit Data input
);

FDRE #(
.INIT (1'b0) // Initial value of register (1'b0 or 1'b1)
) FDRE_INST1 (
.Q (value_latch[j]), // 1-bit Data output
.C (clk_bufg), // 1-bit Clock input
.CE (1'b1), // 1-bit Clock enable input
.R (reset), // 1-bit Synchronous reset input
.D (dat_reg1[j]) // 1-bit Data input
);
end
endgenerate

endmodule

延遲線數(shù)字碼轉(zhuǎn)換二進(jìn)制輸出
latch2bin.v

module latch2bin#(
parameter GAP_BITS = 8

)(
input wire clk_bufg,
input wire reset,
input wire valid,
input wire [(2**GAP_BITS)-1:0] value_latch,
output reg bin_cs,
output reg [GAP_BITS-1:0] bin
);

(* *)reg [(2**GAP_BITS)-2:0] decoding [0:GAP_BITS-4];

(* *)reg [GAP_BITS:0] binary [0:GAP_BITS-3];

(* *)reg [GAP_BITS-2:0] data_valid;

(* *)reg [15:0] decode_final;

(* *)reg [GAP_BITS-1:0] bin_final;

(* *)reg [3:0] ones;

(* *)reg [GAP_BITS:0] binary_r;

always@(*) begin
decoding[0] = value_latch[(2**GAP_BITS)-2:0];
data_valid[0] end

genvar i;
generate
for (i = 0; i always@(posedge clk_bufg) begin
if(reset) begin
decoding[i+1] binary[i+1] data_valid[i+1] end
else begin
binary[i+1][GAP_BITS:GAP_BITS-1-i] data_valid[i+1] if(decoding[i][((2**(GAP_BITS-i))-2)/2]==1'b1) begin
decoding[i+1][((2**(GAP_BITS-i))-2)/2-1:0] end
else begin
decoding[i+1][((2**(GAP_BITS-i))-2)/2-1:0] end
end
end
end
endgenerate

always@(posedge clk_bufg) begin
if(reset) begin
ones data_valid[GAP_BITS-3] binary[GAP_BITS-3] bin_final end
else begin
ones decoding[GAP_BITS-4][0] + decoding[GAP_BITS-4][1] + decoding[GAP_BITS-4][2] + decoding[GAP_BITS-4][3] +
decoding[GAP_BITS-4][4] + decoding[GAP_BITS-4][5] + decoding[GAP_BITS-4][6] + decoding[GAP_BITS-4][7] +
decoding[GAP_BITS-4][8] + decoding[GAP_BITS-4][9] + decoding[GAP_BITS-4][10] + decoding[GAP_BITS-4][11] +
decoding[GAP_BITS-4][12] + decoding[GAP_BITS-4][13] + decoding[GAP_BITS-4][14] + decoding[GAP_BITS-4][15];

data_valid[GAP_BITS-3] binary[GAP_BITS-3]

data_valid[GAP_BITS-2] bin_final end
end

always@(posedge clk_bufg) begin
if(reset) begin
bin_cs bin end
else begin
if(data_valid[GAP_BITS-2] == 1'b1) begin
bin_cs bin end
else begin
bin_cs bin end
end
end

endmodule

測(cè)試

tb_tdc_top.v

module tb_tdc_top;

reg clk_sys;
reg sg_start;
reg reset;
wire [7:0] value_gap;

tdc_top tdc_top_inst(
.sg_start (sg_start),
.clk_sys (clk_sys),
.reset (reset),
.value_gap (value_gap)
);

initial begin
clk_sys = 0;
sg_start = 0;
reset = 1;
#1000;
reset = 0;
#116;
sg_start = 1;
#3;
sg_start = 0;
end

always #(5) clk_sys = ~clk_sys;

endmodule

時(shí)鐘模塊100M輸入,400M輸出,并經(jīng)過BUFG資源。

基于FPGA的TDC延時(shí)設(shè)計(jì)方案

由于每個(gè)carry4的延遲時(shí)間是53ps,每個(gè)時(shí)鐘周期是2.5ns,最多需要50個(gè)carry4級(jí)聯(lián)即可。

5、約束

手冊(cè)上有寫,對(duì)于carry4的第一級(jí)約束后,下一級(jí)的carry4會(huì)以最鄰近的擺放。tdc.xdc

set_property PACKAGE_PIN AD21 [get_ports reset]
set_property PACKAGE_PIN AE23 [get_ports sg_start]
set_property PACKAGE_PIN AD23 [get_ports clk_sys]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {value_gap[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports cs_gap]
set_property IOSTANDARD LVCMOS33 [get_ports reset]
set_property IOSTANDARD LVCMOS33 [get_ports sg_start]
set_property IOSTANDARD LVCMOS33 [get_ports clk_sys]

set_property LOC SLICE_X0Y0 [get_cells line_tdc_inst/genblk1[0].carry4_first.CARRY4_INST]

6、后仿真測(cè)試結(jié)果

基于FPGA的TDC延時(shí)設(shè)計(jì)方案

基于FPGA的TDC延時(shí)設(shè)計(jì)方案
基于FPGA的TDC延時(shí)設(shè)計(jì)方案
基于FPGA的TDC延時(shí)設(shè)計(jì)方案
基于FPGA的TDC延時(shí)設(shè)計(jì)方案
基于FPGA的TDC延時(shí)設(shè)計(jì)方案
7、以上可以對(duì)sg_start和clk_bufg兩個(gè)信號(hào)的間隔進(jìn)行大致估算,通過計(jì)算大致可計(jì)算出第一級(jí)carry4輸入的延時(shí)。

審核編輯:湯梓紅

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

    關(guān)注

    1630

    文章

    21777

    瀏覽量

    604686
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2000

    瀏覽量

    61258
  • TDC
    TDC
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    13795
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TDC1000能否用于多普勒測(cè)流?

    你好,我想問下TDC1000能否用于多普勒測(cè)流?就是通過STOP的頻率計(jì)算出回波的頻率?根據(jù)發(fā)送頻率和STOP頻率來計(jì)算頻差,使用TDC1000的方案能滿足這個(gè)技術(shù)要求嗎?
    發(fā)表于 12-25 07:19

    TDC1000是否對(duì)超聲換能器有要求?

    目前在做關(guān)于液位和流速測(cè)量的應(yīng)用,使用了TI 的TDC1000和TDC7200,遇到以下幾個(gè)問題暫時(shí)無法解決(使用MSP430FR4133) 1.TDC1000是否對(duì)超聲換能器有要求? 2.
    發(fā)表于 12-11 07:36

    求助,關(guān)于TDC1000和TDC7200測(cè)試溫度遇到的疑問求解

    你好,最近用TI開發(fā)板和軟件,TDC1000和TDC7200測(cè)試溫度,通過 示波器和軟件讀出的寄存器比對(duì),發(fā)現(xiàn)寄存器中count 3 的數(shù)據(jù)移動(dòng)到count4,count4移動(dòng)到下面的寄存器。請(qǐng)
    發(fā)表于 12-10 06:03

    TDC1000-TDC7200EVM外接START和STOP信號(hào)時(shí)如何不受TDC1000的信號(hào)影響?

    TDC1000-TDC7200EVM外接START和STOP信號(hào)時(shí),如何不受TDC1000的信號(hào)影響?
    發(fā)表于 12-09 07:13

    使用TDC去測(cè)量pwm兩個(gè)波形相位延時(shí)時(shí)間,如何去設(shè)計(jì)TDC7201的外圍電路?

    您好,當(dāng)我使用TDC去測(cè)量pwm兩個(gè)波形相位延時(shí)時(shí)間,如何去設(shè)計(jì)TDC7201的外圍電路。
    發(fā)表于 12-03 08:07

    TDC芯片數(shù)據(jù)手冊(cè)及官方參考例程

    TDC芯片是一種用于精密測(cè)時(shí)的專用芯片,這類芯片的測(cè)時(shí)精度通常可以達(dá)到ns級(jí)別,在激光測(cè)距、超聲波探測(cè)等ToF領(lǐng)域廣泛應(yīng)用。 下面這個(gè)資料包含了市面上常用TDC芯片的數(shù)據(jù)手冊(cè)、官方例程和部分應(yīng)用電
    發(fā)表于 11-06 23:06

    FPGA延時(shí)Verilog HDL實(shí)現(xiàn)

    可以在任意時(shí)刻啟動(dòng),可以重復(fù)啟動(dòng),延時(shí)時(shí)長(zhǎng)可調(diào),單位可切換(ms/us),在50MHz時(shí)鐘下的延時(shí)范圍是1ms-85899ms/1us-85899us。
    的頭像 發(fā)表于 11-05 11:26 ?351次閱讀

    LM4890采用差分設(shè)計(jì)方案,為什么沒有聲音?怎么解決?

    1、LM4890采用差分設(shè)計(jì)方案(如下圖),為什么沒有聲音?怎么解決? 2、采用差分方案設(shè)計(jì)的功放能用非差分輸出或普通音頻輸出?
    發(fā)表于 11-05 06:33

    MS1205N——激光測(cè)距用高精度時(shí)間測(cè)量(TDC)電路

    MS1205N 是一款高精度時(shí)間測(cè)量(TDC)電路,具有四通道、多脈沖的采樣能力、高速 SPI 通訊、多種測(cè)量模式。提供方案和FAE,歡迎了解
    的頭像 發(fā)表于 10-21 17:58 ?422次閱讀
    MS1205N——激光測(cè)距用高精度時(shí)間測(cè)量(<b class='flag-5'>TDC</b>)電路

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計(jì)

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計(jì)是一個(gè)綜合性的項(xiàng)目,它結(jié)合了硬件電路設(shè)計(jì)、FPGA編程以及圖像處理技術(shù)。以下是一個(gè)詳細(xì)的系統(tǒng)設(shè)計(jì)方案,包括設(shè)計(jì)概述、硬件架構(gòu)、FPGA編程要點(diǎn)以及部
    的頭像 發(fā)表于 07-17 11:24 ?1284次閱讀

    UPS系統(tǒng)設(shè)計(jì)方案解讀

    UPS的應(yīng)用場(chǎng)景日趨多樣化,每個(gè)場(chǎng)景都有其獨(dú)特的需求,對(duì)應(yīng)不同的方案。UPS系統(tǒng)方案指南繼續(xù)上新,本文將聚焦UPS設(shè)計(jì)方案展開講述。
    的頭像 發(fā)表于 06-26 10:06 ?866次閱讀
    UPS系統(tǒng)<b class='flag-5'>設(shè)計(jì)方案</b>解讀

    基于FPGA的SPI Flash控制器的設(shè)計(jì)方案

    Flash控制器的設(shè)計(jì)方案,并用VHDL實(shí)現(xiàn)。編寫的SPI Flash控制器IP核在Modelsim 6.5g上進(jìn)行了功能仿真,在FPGA開發(fā)板上進(jìn)行了測(cè)試驗(yàn)證,可作為功能模塊應(yīng)用于SOC芯片
    發(fā)表于 06-03 10:13

    有沒有使用FPGA控制tdc-gpx2芯片LVDS輸入輸出功能的朋友?

    有無大佬用過TDC_GPX2這款芯片的LVDS輸入輸出功能,有償求助
    發(fā)表于 04-23 22:56

    FPGA時(shí)鐘內(nèi)部設(shè)計(jì)方案

    時(shí)鐘設(shè)計(jì)方案 在復(fù)雜的FPGA設(shè)計(jì)中,設(shè)計(jì)時(shí)鐘方案是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。設(shè)計(jì)者需要很好地掌握目標(biāo)器件所能提供的時(shí)鐘資源及它們的限制,需要了解不同設(shè)計(jì)技術(shù)之間的權(quán)衡,并且需要很好地掌握一系列
    發(fā)表于 01-22 09:30 ?659次閱讀
    <b class='flag-5'>FPGA</b>時(shí)鐘內(nèi)部<b class='flag-5'>設(shè)計(jì)方案</b>

    MCU如何配置固定TDC

    如附圖所示,在發(fā)送和接收消息期間,控制器開始發(fā)送比特的時(shí)間與從接收終端接收到位置的時(shí)間之間存在延遲,即發(fā)送節(jié)點(diǎn)的延遲。 數(shù)據(jù)字段中 CANFD 的采樣點(diǎn)需要采用發(fā)送節(jié)點(diǎn)延遲補(bǔ)償機(jī)制(TDC 機(jī)制
    發(fā)表于 01-22 07:29
    主站蜘蛛池模板: 国产热| 五月婷六月丁香| 2022年永久免费观看| 四虎tv在线观看884aa| 啪啪网站视频| 亚州视频一区| 中文字幕在线看精品乱码| 伊人啪| 色五月激情五月| 欧美线人一区二区三区| 久久久久久综合| 大香交伊人| 天天操夜夜摸| аⅴ天堂中文在线网| jizz性欧美12| 成人网中文字幕色| 四虎精品免费国产成人| 屁屁影院在线| 久久亚洲国产午夜精品理论片| 成年色黄大色黄大片 视频| a天堂资源| 秋霞麻豆| 色中色软件| 激情五月社区| 色偷偷综合| 激情文学综合| 亚洲我射| 国产欧美日韩综合精品无毒| 高清一级做a爱免费视| 国产农村一级特黄α真人毛片| free性欧美69高清| 啪啪伊人网| 在线视频亚洲一区| 亚洲人成在线精品| 天天色天天拍| 美女网站视频色| 亚洲综合五月天婷| 荡女妇边被c边呻吟久久| 亚洲 [12p]| 色婷婷综合久久久久中文一区二区 | 欧美午夜视频在线观看|