1、超時(shí)判斷機(jī)制
在設(shè)計(jì)中,為了增加異常處理能力,保證設(shè)備的正常運(yùn)行,常常需要進(jìn)行超時(shí)判斷。
如下圖,當(dāng)master發(fā)起mem讀請(qǐng)求后,收到讀返回?cái)?shù)據(jù)時(shí),進(jìn)行超時(shí)判斷,如果超時(shí),則數(shù)據(jù)丟棄,如果沒(méi)有超時(shí),則數(shù)據(jù)正常接收。
2、一種簡(jiǎn)單的超時(shí)機(jī)制
如果在數(shù)據(jù)發(fā)送過(guò)程中,發(fā)送者向接收者發(fā)送數(shù)據(jù),通常需要接收者通知發(fā)送者自身是否可以接收數(shù)據(jù)
采用一個(gè)公共的32bit clk_cnt作為時(shí)間基準(zhǔn),根據(jù)不同的超時(shí)精度,采用32bit中的連續(xù)2bit,1GHz時(shí)鐘,每個(gè)周期1n,例如采用clk_cnt[20:19],可以記錄2^21ns級(jí)別的精度,即2ms級(jí)別的時(shí)間精度。
本文中master能夠發(fā)起256個(gè)outstanding請(qǐng)求,req_id[7:0]從0到255,且工作時(shí)鐘clk為1Ghz,發(fā)起的mem讀請(qǐng)求,且在1us后都沒(méi)有收到數(shù)據(jù),則認(rèn)為超時(shí)。
步驟1:master發(fā)起mem_rd請(qǐng)求時(shí),以req_id作為地址,將clk_cnt[20:19]作為data,寫入256x2 1r1w_ram中。
步驟2:當(dāng)master收到讀返回?cái)?shù)據(jù)時(shí),以req_id作為地址從ram中讀取data,記作clk_cnt_record
步驟3:提取當(dāng)前時(shí)刻clk_cnt[20:19],記錄為clk_cnt_now,如果clk_cnt_now-clk_cnt_record 的絕對(duì)值大于1,則表示超時(shí)。
案例:
clk_cnt_record 為 10,clk_cnt_now為00,則表示超時(shí)。
clk_cnt_record 為 10,clk_cnt_now為11,則認(rèn)為不超時(shí)。
3、特點(diǎn)說(shuō)明
優(yōu)點(diǎn):此類設(shè)計(jì)比較簡(jiǎn)單,所需的邏輯資源較少,并且可以調(diào)節(jié)超時(shí)時(shí)間精度。
缺點(diǎn):
1.如果超時(shí)時(shí)間過(guò)長(zhǎng),已經(jīng)從clk_cnt_record翻轉(zhuǎn)了一圈再返回時(shí),則無(wú)法判斷是否為超時(shí)。即clk_cnt_record(10)-->11-->00-->01-->10-->11(clk_cnt_now),實(shí)際已超時(shí),但是判斷為沒(méi)有超時(shí)。
2.沒(méi)有讀返回?cái)?shù)據(jù)時(shí),無(wú)法判斷是否超時(shí)。
verilog語(yǔ)法:幾種可綜合的for循環(huán)語(yǔ)句

1、采用int實(shí)現(xiàn)不同信號(hào)賦值的循環(huán)
在同一個(gè).v文件中,在不同的場(chǎng)景中,我們想例化不同的ram,如果不使用宏定義,那么該怎么實(shí)現(xiàn)呢?
直接采用for(int*)類型格式,可以在一個(gè)else分支中使用,不需要使用generate,使用更加靈活,使用范圍更廣。
input [1024-1:0] func_mode_in;
reg [512-1:0] func_id_vld;
always@(posedge clk)
if(~rst_n) begin
func_id_vld <= 512'b0 ;
end else begin
for(int i=0; i<512;i=i+1) begin : func_id_vld_gen
func_id_vld[i] <= (func_mode_in[2*i+:2]==2'b01) ;
end
end
2、采用int實(shí)現(xiàn)同一個(gè)信號(hào)賦值的循環(huán)
下圖所示,采用for(int*)類型格式實(shí)現(xiàn)了一個(gè)16mux1的循環(huán)賦值語(yǔ)句,實(shí)現(xiàn)不同條件一下,對(duì)debug_test_16mux1的賦值操作,即16mux1的邏輯。
input [128*16-1:0] debug_test_in;
input [4-1:0] cfg_16mux1_mode;
reg [128-1:0] debug_test_16mux1;
begin
debug_test_16mux1 = 128'd0;
i=0; i<16;i=i+1) begin : debug_test_16mux1_gen
=i) begin =
debug_test_16mux1 = debug_test_in[128*i+:128] ;
break ;
end
end
end
如上for循環(huán)語(yǔ)句實(shí)現(xiàn)了如下的case語(yǔ)句效果
begin
case(cfg_16mux1_mode)
0 : debug_test_16mux1 = debug_test_in[127 :0 ];
1 : debug_test_16mux1 = debug_test_in[255 :128 ];
2 : debug_test_16mux1 = debug_test_in[383 :256 ];
3 : debug_test_16mux1 = debug_test_in[511 :384 ];
4 : debug_test_16mux1 = debug_test_in[639 :512 ];
5 : debug_test_16mux1 = debug_test_in[767 :640 ];
6 : debug_test_16mux1 = debug_test_in[895 :768 ];
7 : debug_test_16mux1 = debug_test_in[1023 :896 ];
8 : debug_test_16mux1 = debug_test_in[1151 :1024 ];
9 : debug_test_16mux1 = debug_test_in[1279 :1152 ];
10: debug_test_16mux1 = debug_test_in[1407 :1280 ];
11: debug_test_16mux1 = debug_test_in[1535 :1408 ];
12: debug_test_16mux1 = debug_test_in[1663 :1536 ];
13: debug_test_16mux1 = debug_test_in[1791 :1664 ];
14: debug_test_16mux1 = debug_test_in[1919 :1792 ];
15: debug_test_16mux1 = debug_test_in ;
endcase
end
NOTE:在for(int*)語(yǔ)句中,debug_test_16mux1 = debug_test_in[128*i+127:128*i] ; 會(huì)報(bào)語(yǔ)法錯(cuò)誤,語(yǔ)法錯(cuò)誤,只識(shí)別debug_test_in[128*i+:128]而無(wú)法識(shí)別debug_test_in[128*i+127:128*i] ,否則VCS會(huì)報(bào)語(yǔ)法錯(cuò)誤。
審核編輯 :李倩
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7249瀏覽量
91401 -
IC設(shè)計(jì)
+關(guān)注
關(guān)注
38文章
1352瀏覽量
105401 -
機(jī)制
+關(guān)注
關(guān)注
0文章
24瀏覽量
9920
原文標(biāo)題:IC知識(shí)點(diǎn):超時(shí)機(jī)制、verilog語(yǔ)法
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
電機(jī)選型計(jì)算公式與知識(shí)點(diǎn)匯總
嵌入式硬件雜談:推挽、開(kāi)漏、高阻態(tài)、上拉電阻

MCUX SDK FreeRTOS I2C驅(qū)動(dòng)程序中沒(méi)有超時(shí)選項(xiàng)是怎么回事?
一種基于點(diǎn)、線和消失點(diǎn)特征的單目SLAM系統(tǒng)設(shè)計(jì)

電氣工程師必知必會(huì)的100個(gè)電?知識(shí)點(diǎn)分享
華邦電子安全閃存關(guān)鍵知識(shí)點(diǎn)
Aigtek功率放大器應(yīng)用:電感線圈的知識(shí)點(diǎn)分享

后悔沒(méi)有早點(diǎn)看到:天線設(shè)計(jì)中的知識(shí)點(diǎn)!

一種使用LDO簡(jiǎn)單電源電路解決方案

接口測(cè)試?yán)碚摗⒁蓡?wèn)收錄與擴(kuò)展相關(guān)知識(shí)點(diǎn)

socket 連接超時(shí)處理技巧
socket連接超時(shí)如何處理
一種簡(jiǎn)單高效配置FPGA的方法

評(píng)論