99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

FPGA-xilinx系列芯片的復(fù)位,你真的明白嗎?

寫在前面

本文記錄總結(jié)之前在FPGA分享會(huì)中學(xué)到的關(guān)于賽靈思系列的復(fù)位功能操作的設(shè)計(jì)以及建議,進(jìn)行分析總結(jié)。

學(xué)習(xí)FPGA入門,有一說(shuō)一我的領(lǐng)路人大部分都是用的intel的芯片下板驗(yàn)證,當(dāng)時(shí)也不理解為啥子要這樣復(fù)位,寫抄就完了甚至感覺還挺有道理哈哈哈哈。

但是現(xiàn)在隨著學(xué)習(xí)的深入我漸漸得發(fā)現(xiàn)復(fù)位還真是門學(xué)問(wèn)。話不多說(shuō)正文見。

總述

對(duì)于Altera的FPGA而言,因?yàn)槔锩娴膄lip-flop只支持低有效的異步復(fù)位,所以推薦使用低有效的異步復(fù)位。

對(duì)于xilinx 7系列的FPGA而言,flip-flop支持高有效的異步復(fù)/置位和同步復(fù)位/置位。對(duì)普通邏輯設(shè)計(jì),同步復(fù)位和異步復(fù)位沒(méi)有區(qū)別,當(dāng)然由于器件內(nèi)部信號(hào)均為高有效,因此推薦使用高有效的控制信號(hào),最好使用高有效的同步復(fù)位。輸入復(fù)位信號(hào)的低有效在頂層放置反相器可以被吸收到IOB中。

為什么復(fù)位?

使用全局復(fù)位有利于我們仿真,所有的寄存器都是有初始值的,也可以在任意時(shí)刻讓你的寄存器恢復(fù)初值,所以驗(yàn)證工程師很喜歡這樣的設(shè)計(jì),但是Xilinx建議的是盡量避免使用全局復(fù)位。 復(fù)位的基本目的是使器件強(qiáng)制進(jìn)入到可以穩(wěn)定工作的確定狀態(tài)。 這避免了器件在上電后進(jìn)入到隨機(jī)狀態(tài)導(dǎo)致進(jìn)入到無(wú)法判斷的狀態(tài)(也就是死機(jī)了)。在實(shí)際設(shè)計(jì)過(guò)程中,設(shè)計(jì)者必須選擇最適合于設(shè)計(jì)本身的復(fù)位方式。

xilinx為什么不推薦異步復(fù)位?

在這里插入圖片描述

  1. 異步重置將不會(huì)被添加到數(shù)據(jù)路徑。所以數(shù)據(jù)路徑對(duì)于時(shí)序分析來(lái)說(shuō)是干凈的。
  2. 電路可以復(fù)位與或沒(méi)有時(shí)鐘的情況下復(fù)位電路。
  3. 不需要綜合指令

導(dǎo)致亞穩(wěn)態(tài)

異步復(fù)位比預(yù)期的要復(fù)雜得多,異步復(fù)位與寄存器工作時(shí)鐘域沒(méi)有一定的相位關(guān)系,很難確保所有寄存器同時(shí)從狀態(tài)中釋放出來(lái)。 因?yàn)閮?nèi)部復(fù)位信號(hào)的偏差,寄存器A將在當(dāng)前時(shí)鐘周期內(nèi)從復(fù)位中釋放,C將在下一個(gè)時(shí)鐘周期釋放,B難以定義,甚至可能導(dǎo)致亞穩(wěn)態(tài)。 簡(jiǎn)而言之,==亞穩(wěn)態(tài)亞穩(wěn)態(tài)亞穩(wěn)態(tài)!!!==

浪費(fèi)布線資源

異步復(fù)位信號(hào)會(huì)占用大量的布線資源是高速設(shè)計(jì)的必要條件,但我們不能看到它在源代碼 -占用太多布線資源將減少其他連接的自由。 -可能降低系統(tǒng)性能潛在地需要一個(gè)更高的設(shè)備速度等級(jí)。 -增加布線時(shí)間。

浪費(fèi)Slice資源

-有和沒(méi)有異步復(fù)位的寄存器不能被包裝在一個(gè)Slice -不同異步復(fù)位的寄存器不能被包裝在一個(gè)Slice

降低DSP和BRAM性能

如圖,在XILINX內(nèi)部 的dsp和bram中,只有同步復(fù)位,異步復(fù)位是不會(huì)包含復(fù)位到BRAM/DSP的

解決方案

  1. 不復(fù)位
  2. 同步復(fù)位

同步復(fù)位的好處

同步復(fù)位為工具提供了更多的靈活性

異步復(fù)位確實(shí)會(huì)出現(xiàn)高扇出的情況。Fan-out即扇出,模塊直接調(diào)用的下級(jí)模塊的個(gè)數(shù),如果這個(gè)數(shù)值過(guò)大的話,在FPGA直接表現(xiàn)為net delay較大,不利于時(shí)序收斂。因此,在寫代碼時(shí)應(yīng)盡量避免高扇出的情況。

在這里插入圖片描述

  1. 合成可以選擇將控制信號(hào)的==低扇出==同步復(fù)位移到數(shù)據(jù)通路,以釋放更多的寄存器。
  2. 這可以允許將這個(gè)寄存器打包到以前不可能的一個(gè)slice中
  3. 可以改善時(shí)序以及寄存器密度

同步復(fù)位讓我們的設(shè)計(jì)穩(wěn)定

從上圖我們可以看出,在我們的復(fù)位發(fā)送故障時(shí),我們的同步復(fù)位只能在時(shí)鐘的邊沿觸發(fā),這樣進(jìn)而保證了我們系統(tǒng)的穩(wěn)定性,在復(fù)位故障時(shí)盡量相對(duì)保證系統(tǒng)穩(wěn)定。

復(fù)位建議

  1. 避免復(fù)位
  2. 高復(fù)位
  3. 同步復(fù)位
  4. 不要混合復(fù)位
  5. 可以在寄存器初始化時(shí)候直接賦值
reg [7:0] code = 8'hff;

內(nèi)部寄存器其實(shí)很多情況不需要過(guò)分復(fù)位,大不了之前的垃圾數(shù)據(jù)我們不用就行了。重置重置是設(shè)計(jì)中需要考慮和限制的更常見和重要的控制信號(hào)之一。重置可以顯著影響設(shè)計(jì)的性能、面積和功率。

模塊化復(fù)位

模塊復(fù)位可以降低扇出,保證電路的穩(wěn)定進(jìn)行。

使用指令確保模塊復(fù)位信號(hào)不被綜合掉

example:

(* keep="true" *) reg my_modular_reset1;
(* keep="true" *) reg my_modular_reset2;
(* keep=“true” *) reg my_modular_reset3;
always @(posedge clkA) begin
my_modular_reset1 <= synchronized_reset;
my_modular_reset2 <= synchronized_reset;
my_modular_reset3 <= synchronized_reset;
end

DSP片采用同步復(fù)位

DSP芯片比大多數(shù)實(shí)現(xiàn)的芯片更通用 -它可以用于乘數(shù),增加/sub, MACC,計(jì)數(shù)器(與可編程終端計(jì)數(shù)),比較器,移位,多路復(fù)用器,模式匹配,和許多其他邏輯功能。 每個(gè)DSP片有效地具有> 310寄存器 -沒(méi)有異步復(fù)位 使用同步全局重置可以使合成工具更容易地使用DSP切片 -異步復(fù)位方法將防止工具使用的存儲(chǔ)資源在DSP片。

塊RAM使用同步重置

RAM只有同步復(fù)位,塊ram通過(guò)使用輸出寄存器獲得最小時(shí)鐘輸出時(shí)間。

非復(fù)位不可嗎?

流水線的操作在幾個(gè)周期內(nèi)就會(huì)把垃圾數(shù)據(jù)給移走,所以在這里的設(shè)計(jì)進(jìn)行復(fù)位是多余的。

但是有一些情況下,復(fù)位的釋放后是很重要的。

比如獨(dú)熱碼狀態(tài)機(jī)。如果表示獨(dú)熱碼狀態(tài)的第一個(gè)觸發(fā)器比第二個(gè)觸發(fā)器早釋放了一個(gè)時(shí)鐘周期,那狀態(tài)機(jī)的狀態(tài)機(jī)會(huì)跳轉(zhuǎn)到一個(gè)無(wú)效的狀態(tài)。如果所有的表示獨(dú)熱碼的寄存器無(wú)法在同一個(gè)周期內(nèi)被釋放,那狀態(tài)機(jī)肯定會(huì)跳轉(zhuǎn)到一個(gè)無(wú)效的狀態(tài)。

其實(shí)當(dāng)Xilinx FPGA配置或重新配置時(shí),所有的單元都會(huì)被初始化。稱為master reset,因?yàn)檫@可比你復(fù)位一些D觸發(fā)器要強(qiáng)得多,它甚至初始化了片內(nèi)RAM。

Xilinx的器件也有嵌入處理的系列,軟核或硬核。在程序執(zhí)行第一條指令前,程序和數(shù)據(jù)區(qū)域已經(jīng)定義好了。有了上電復(fù)位,還用專門消耗邏輯資源去復(fù)位觸發(fā)器是沒(méi)有意義的。

通常可以將設(shè)計(jì)分為兩部分,控制路徑和數(shù)據(jù)路徑

==-至于數(shù)據(jù)路徑,初始值并不重要。重置是不必要的。==

==-只在設(shè)計(jì)中需要獲得有效幀信號(hào)或設(shè)計(jì)回到已知良好狀態(tài)的部分使用外部復(fù)位==

不復(fù)位是最好的!

總之就是能不用復(fù)位就盡量不用。

demo分享

demo1

優(yōu)化前資源使用:

優(yōu)化后: 資源節(jié)約的不是一點(diǎn)點(diǎn)阿....

全局復(fù)位和模塊復(fù)位對(duì)比

高扇出

優(yōu)化后你就說(shuō)帶不帶勁哈哈哈哈。

復(fù)位總結(jié)

  1. 復(fù)位前考慮是否需要復(fù)位
  2. 盡量不用復(fù)位
  3. 使用初始化代碼寄存器進(jìn)行復(fù)位
  4. 使用異步復(fù)位時(shí)候要注意

使用異步復(fù)位,同步釋放的方法。用內(nèi)部定義復(fù)位信號(hào)的方法來(lái)復(fù)位觸發(fā)器,而不是全都直接使用全局復(fù)位信號(hào)。當(dāng)進(jìn)行復(fù)位操作時(shí),所有的觸發(fā)器被預(yù)設(shè)為1。如上圖,移位寄存器的最后一個(gè)觸發(fā)器去操作模塊內(nèi)部定義的復(fù)位網(wǎng)絡(luò)。當(dāng)復(fù)位信號(hào)釋放時(shí),移位寄存器經(jīng)過(guò)移位,當(dāng)最后一個(gè)觸發(fā)器由高電平變?yōu)榈碗娖綍r(shí),對(duì)本地的復(fù)位網(wǎng)絡(luò)進(jìn)行復(fù)位操作。也就是異步復(fù)位,同步釋放。

異步復(fù)位,就是復(fù)位信號(hào)可以直接不受時(shí)鐘信號(hào)影響,在任意時(shí)刻只要是低電平就能復(fù)位(假如約定低電平復(fù)位),也就是說(shuō),復(fù)位信號(hào)不需要和時(shí)鐘同步。而同步釋放就很有意思了,它的意思是讓復(fù)位信號(hào)取消的時(shí)候,必須跟時(shí)鐘信號(hào)同步,也就是說(shuō)正好跟時(shí)鐘同沿。

module Reset_test(
	input clk,
	input rst_nin,
	output reg rst_nout
);
 
	reg rst_mid;
 
	always@(posedge clk or negedge rst_nin)
	begin
		if(!rst_nin)
		begin
			rst_mid <= 0;
			rst_nout <= 0;
		end
		else
		begin
			rst_mid <= 1;
			rst_nout <= rst_mid;
		end
	end
endmodule

Reference

  1. xilinx FPGA復(fù)位淺析
  2. 你真的會(huì)Xilinx FPGA的復(fù)位嗎?
聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關(guān)注 14
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧
主站蜘蛛池模板: 国精产品一区二区三区四区 | 日本永久免费a∨在线视频 91精品国产综合久久小仙女图片 | 午夜网站在线观看 | 成在线人AV无码高潮喷水 | 国产精品国产三级国AV | 亚洲国产精品成人天堂 | 视频网站高清免费在线观看 | 一道本不卡视频 | 2021亚洲va在线va天堂va国产 | 国产免费一级特黄真人视频 | 性色AV一区二区三区V视界影院 | 加勒比无码专区中文字幕 | 狠狠色狠狠色很很综合很久久 | 久久蜜桃资源一区二区老牛 | 色呦呦久久久 | 超碰97精品 | 国产精品老牛影院av | 天天操夜操视频 | 一边捏奶头一边高潮视频 | 香港三级精品三级在线专区 | 欧美最猛黑人xxxx黑人表情 | 亚洲黄色第一页 | 黄色片免 | 日本欧美一区二区三区视频麻豆 | 日本三级美女 | 日韩欧美久久久久久久999按摩 | www.天天射.com | 欧洲国产精品无码专区影院 | 国产亚洲欧美日韩精品 | 日韩网站视频 | 久热精品视频在线观看 | 日本欧美一区 | 欧美A级毛欧美一级在线观看 | 曰本人做爰大片免费观看 | 国产在线精品国自产拍影院同性 | 亚洲日韩中文字幕天堂不卡 | 亚洲三级中文字幕在线看 | 国产性xxxx18免费观看视频 | av免费网 | 午夜小视频免费 | 永久黄网站色视频免费 |