chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

時(shí)序優(yōu)化之發(fā)送端打拍策略解析

冬至子 ? 來源:芯時(shí)代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 10:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

打拍是進(jìn)行時(shí)需優(yōu)化最常用和最簡單的方式之一,不過握手型協(xié)議的打拍和通常的使能型協(xié)議是不同的。使能型只需要把data/enable或者xoff使用寄存器正常打拍即可,而握手型由于自身的特殊性(必須在握手當(dāng)拍做出響應(yīng)),所以單純打拍肯定是不行的。

握手型協(xié)議的時(shí)序優(yōu)化分為三種情況:對發(fā)送端進(jìn)行優(yōu)化(即valid打拍,或稱forward打拍),對接受端進(jìn)行優(yōu)化(即ready打拍,或稱backward打拍),對兩端均優(yōu)化(即valid-ready打拍,或稱forward-backword打拍)。本篇對forward打拍進(jìn)行說明。

fw_pipe的打拍對象不僅是valid也包括data,道理是顯而易見的,data和valid一樣是發(fā)送端驅(qū)動(dòng)的且需要與valid保持時(shí)序上的一致,不能valid打拍延時(shí)了data沒變,那就差拍了。

對于valid和data打拍,我們要借助兩個(gè)寄存器實(shí)現(xiàn)。通常來說數(shù)據(jù)如果不參與控制邏輯,是沒有必要進(jìn)行復(fù)位的,因此使用兩種不同的寄存器:

module dffre #(
	parameter WIDTH = 1
)(
	input 			clk,
	input 			rst_n,
	input  	[WIDTH -1:0]	d,
	input			en,
	output reg[WIDTH -1:0]	q
);
always @(posedge clk or negedge rst_n)begin
	if(~rst_n)  q <= {WIDTH{1'b0}};
	else if(en) q <= d;
end
endmodule

module dffe#(
	parameter WIDTH = 1
)(
	input 			clk,
	input  	[WIDTH -1:0]	d,
	input	    		en,
	output reg[WIDTH -1:0]	q
);
always @(posedge clk)begin
	if(en) q <= d;
end
endmodule

寄存器選好了,接下來確定fw_pipe的接口,data_in側(cè)數(shù)輸入端,data_out為輸出端。:

module fw_pipe #(
	parameter WIDTH = 8)
(
	input clk,
	input rst_n,
	
	input [WIDTH -1:0]data_in,
	input 		  data_in_valid,
	output		  data_in_ready,
	
	output[WIDTH -1:0]data_out,
	output		  data_out_valid,
	input		  data_out_ready
);
endmodule

接下來就是借助dffre對data_in_valid打拍的邏輯了。邏輯其實(shí)比較簡單,u_in_valid_dffre就是專門用來緩存data_in_valid,那么當(dāng)上一個(gè)data_in_valid還沒有被下游握手時(shí)顯然當(dāng)前的data_in_valid是不能寫入u_in_valid_dffre的。

那么問題就變成了,如何預(yù)期下一拍的u_in_valid_dffre是空的,當(dāng)前拍的data_in_valid可以使能寄存器并在下一拍寫入到u_in_valid_dffre中呢?兩種情況:

  • 當(dāng)拍的u_in_valid_dffre就是空的;
  • u_in_valid_dffre不空,當(dāng)當(dāng)拍的data_out_ready為1,u_in_valid_dffre在下一拍必然為空;

于是精簡代碼之后的代碼,如下所示:

wire in_valid_en = data_in_ready;
wire in_valid_d  = data_in_valid;
wire in_valid_q;
dffre #(.WIDTH(1))
u_in_valid_dffre(
	.clk(clk),
	.rst_n(rst_n),
	.d(in_valid_d),
	.en(in_valid_en),
	.q(in_valid_q)
);
assign data_in_ready  = data_out_ready || (~in_valid_q);

而后是通過無復(fù)位的dffe對data_in進(jìn)行打拍,u_in_data_dffe的更新邏輯完全跟隨data_in_valid一致就可以,data_in_valid可以寫進(jìn)寄存器時(shí)data_in也必須跟著寫進(jìn)寄存器,當(dāng)然了為了避免x態(tài)的傳播造成困擾,可以選擇在輸入握手時(shí)寫入寄存器:

wire 		data_en = data_in_valid && data_in_ready;
wire [WIDTH -1:0]data_d  = data_in;
wire [WIDTH -1:0]data_q;
dffe #(.WIDTH(WIDTH))
u_in_data_dffe(
	.clk(clk),
	.d(data_d),
	.en(data_en),
	.q(data_q)
);

最后就是輸出邏輯:

assign data_out_valid = in_valid_q;
assign data_out = data_q;

整個(gè)fw_pipe的代碼就完成了:

module fw_pipe #(
	parameter WIDTH = 8)
(
	input clk,
	input rst_n,
	
	input [WIDTH -1:0]data_in,
	input 		  data_in_valid,
	output		  data_in_ready,
	
	output[WIDTH -1:0]data_out,
	output		  data_out_valid,
	input		  data_out_ready
);

wire in_valid_en = data_in_ready;
wire in_valid_d  = data_in_valid;
wire in_valid_q;
dffre #(.WIDTH(1))
u_in_valid_dffre(
	.clk(clk),
	.rst_n(rst_n),
	.d(in_valid_d),
	.en(in_valid_en),
	.q(in_valid_q)
);

wire 		 data_en = data_in_valid && data_in_ready;
wire [WIDTH -1:0]data_d  = data_in;
wire [WIDTH -1:0]data_q;
dffe #(.WIDTH(WIDTH))
u_in_data_dffe(
	.clk(clk),
	.d(data_d),
	.en(data_en),
	.q(data_q)
);

assign data_in_ready  = data_out_ready || (~in_valid_q);
assign data_out_valid = in_valid_q;
assign data_out = data_q;

endmodule

借助auto_testbench驗(yàn)證一下代碼的正確性,在出口頻繁反壓的情況下仿真了100000ns:

圖片

數(shù)據(jù)比對全部通過:

圖片

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

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124577
  • 時(shí)序優(yōu)化
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1499
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    時(shí)序優(yōu)化接收打拍策略探討

    這篇文章是探討對接收進(jìn)行時(shí)序優(yōu)化(即ready打拍,或稱backward打拍)的方式。
    的頭像 發(fā)表于 12-04 10:20 ?910次閱讀
    <b class='flag-5'>時(shí)序</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>之</b>接收<b class='flag-5'>端</b><b class='flag-5'>打拍</b><b class='flag-5'>策略</b>探討

    【InTime試用體驗(yàn)】使用簡易、策略選擇精確度高的一款時(shí)序優(yōu)化軟件

    解決FPGA時(shí)序優(yōu)化問題的軟件。InTime 內(nèi)嵌學(xué)習(xí)引擎,可以智能分析FPGA設(shè)計(jì),為綜合和布局布線提供更優(yōu)的策略組合。同時(shí),根據(jù)對器件、設(shè)計(jì)和工具特點(diǎn)的了解,以及獨(dú)有的算法,InTime 可以生成最能滿足
    發(fā)表于 07-05 11:00

    幾個(gè)FPGA時(shí)序優(yōu)化簡單技巧

    特定模塊劃分到不同的時(shí)鐘域里;但異步時(shí)鐘域不宜太多。綜合時(shí)使用retiming,duplication;physical synthesis優(yōu)化,現(xiàn)在的綜合器這方面已經(jīng)足夠聰明了。預(yù)算允許可使用速度更快的芯片;這個(gè)也許是實(shí)現(xiàn) “不修改RTL又時(shí)序收斂” 的最可能的方式。
    發(fā)表于 06-07 17:55

    運(yùn)籌優(yōu)化動(dòng)態(tài)規(guī)劃解析

    運(yùn)籌優(yōu)化(七)--動(dòng)態(tài)規(guī)劃解析
    發(fā)表于 05-12 09:57

    靜態(tài)時(shí)序優(yōu)化策略有哪些?

    變則通,通則久。事物都有其運(yùn)行的規(guī)律,把握好規(guī)律,就能更好的實(shí)現(xiàn)人的目的。在數(shù)字后端設(shè)計(jì)中,時(shí)序優(yōu)化一直是關(guān)鍵問題,尤其追求高頻高性能的設(shè)計(jì)中,時(shí)許問題常常貫穿始終。大大小小二十幾個(gè)項(xiàng)目模塊后端工作
    發(fā)表于 12-10 07:37

    FPGA設(shè)計(jì)應(yīng)用及優(yōu)化策略有哪些?

    EDA技術(shù)具有什么特征?FPGA是什么原理?FPGA設(shè)計(jì)應(yīng)用及優(yōu)化策略基于VHDL的FPGA系統(tǒng)行為級設(shè)計(jì)
    發(fā)表于 04-15 06:33

    你知道RTL時(shí)序優(yōu)化迭代的技巧有哪些嗎

    專項(xiàng)優(yōu)化,時(shí)序與門控精度的trade off。我優(yōu)化的模塊的一個(gè)典型的特點(diǎn)是低功耗要求很高,幾乎所有Always塊都會有綜合自動(dòng)生成的時(shí)鐘門控。由于時(shí)鐘樹長差異和Setup要求更嚴(yán),時(shí)鐘門控的E
    發(fā)表于 06-23 15:43

    FPGA設(shè)計(jì)中層次結(jié)構(gòu)設(shè)計(jì)和復(fù)位策略影響著FPGA的時(shí)序

    FPGA設(shè)計(jì)中,層次結(jié)構(gòu)設(shè)計(jì)和復(fù)位策略影響著FPGA的時(shí)序。在高速設(shè)計(jì)時(shí),合理的層次結(jié)構(gòu)設(shè)計(jì)與正確的復(fù)位策略可以優(yōu)化時(shí)序,提高運(yùn)行頻率。
    發(fā)表于 02-15 15:15 ?1105次閱讀

    時(shí)序分析的優(yōu)化策略詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA的時(shí)序分析的優(yōu)化策略詳細(xì)說明。
    發(fā)表于 01-14 16:03 ?17次下載
    <b class='flag-5'>時(shí)序</b>分析的<b class='flag-5'>優(yōu)化</b><b class='flag-5'>策略</b>詳細(xì)說明

    時(shí)序分析的優(yōu)化策略詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA的時(shí)序分析的優(yōu)化策略詳細(xì)說明。
    發(fā)表于 01-14 16:03 ?19次下載
    <b class='flag-5'>時(shí)序</b>分析的<b class='flag-5'>優(yōu)化</b><b class='flag-5'>策略</b>詳細(xì)說明

    如何降低面積和功耗?如何優(yōu)化電路時(shí)序?

    1、如何降低功耗? (1) 優(yōu)化方向: 組合邏輯+時(shí)序邏輯+存儲 (2) 組合邏輯: ??(a)通過算法優(yōu)化的方式減少門電路 ??(b)模塊復(fù)用、資源共享 (3) 時(shí)序邏輯: ??(a
    發(fā)表于 02-11 15:30 ?2次下載
    如何降低面積和功耗?如何<b class='flag-5'>優(yōu)化</b>電路<b class='flag-5'>時(shí)序</b>?

    IC設(shè)計(jì)的特殊信號打拍方式及RR輪詢調(diào)度

    Axi總線打拍模塊通常會采用特殊設(shè)計(jì)的IP模塊,將所有axi總線信號互聯(lián)到axi打拍ip上,起到一個(gè)橋接的作用,能夠解決時(shí)序問題。
    發(fā)表于 10-03 15:26 ?1597次閱讀

    在valid ready協(xié)議中對ready進(jìn)行timing修復(fù)打拍的方法

    首先將把目標(biāo)設(shè)計(jì)想象成一個(gè)黑盒子,如圖1所示,我們的目標(biāo)是將READY_DOWN通過打拍的方法獲得時(shí)序優(yōu)化。
    的頭像 發(fā)表于 06-27 16:20 ?1767次閱讀
    在valid ready協(xié)議中對ready進(jìn)行timing修復(fù)<b class='flag-5'>打拍</b>的方法

    解析DeepSeek MoE并行計(jì)算優(yōu)化策略

    本期Kiwi Talks將從集群Scale Up互聯(lián)的需求出發(fā),解析DeepSeek在張量并行及MoE專家并行方面采用的優(yōu)化策略。DeepSeek大模型的工程優(yōu)化以及國產(chǎn)AI 產(chǎn)業(yè)鏈的
    的頭像 發(fā)表于 02-07 09:20 ?1782次閱讀
    <b class='flag-5'>解析</b>DeepSeek MoE并行計(jì)算<b class='flag-5'>優(yōu)化</b><b class='flag-5'>策略</b>

    AXI握手時(shí)序優(yōu)化—pipeline緩沖器

    /prdy或者valid-ready或AXI)中Valid及data打拍技巧?;只關(guān)心ready時(shí)序修復(fù)可以參考同作者這篇文章鏈接:?(AXI)握手協(xié)議(pvld/prdy或者valid-ready)中
    的頭像 發(fā)表于 03-08 17:10 ?567次閱讀
    AXI握手<b class='flag-5'>時(shí)序</b><b class='flag-5'>優(yōu)化</b>—pipeline緩沖器