中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

攜程特牌 的同時做別的網(wǎng)站蘭州做網(wǎng)站的公司

攜程特牌 的同時做別的網(wǎng)站,蘭州做網(wǎng)站的公司,上海網(wǎng)站建設(shè)門戶,今日生豬最新價格漲跌表今日豬價1、前言 在邏輯設(shè)計中,為了保證運算結(jié)果的正確性,常常需要對結(jié)果的位寬進行擴展。比如2個3bits的無符號數(shù)相加,只有將結(jié)果設(shè)定為4bits,才能保證結(jié)果一定是正確的。不然,某些情況如77 14(1110),如果結(jié)果只…

1、前言

在邏輯設(shè)計中,為了保證運算結(jié)果的正確性,常常需要對結(jié)果的位寬進行擴展。比如2個3bits的無符號數(shù)相加,只有將結(jié)果設(shè)定為4bits,才能保證結(jié)果一定是正確的。不然,某些情況如7+7 = 14(1110),如果結(jié)果只用3bits表示那么就成了110(6)了,這樣運算的結(jié)果就是錯的。同理,乘法操作需要擴展的位寬更大,是兩個乘數(shù)的位寬之和,比如2個3bits的無符號數(shù)做乘法,結(jié)果需要設(shè)定為6bits。

如果在后續(xù)數(shù)據(jù)處理的過程中,一直都這樣對結(jié)果的位寬進行擴展,那么在算法鏈很長的情況下,將會消耗大量的邏輯資源。因此在設(shè)計中,常常需要對數(shù)據(jù)進行的位寬進行處理。

數(shù)據(jù)的位寬處理分為兩個部分:

  • 對整數(shù)的處理:例如原本用6bits表示的結(jié)果,下級模塊規(guī)定只能用到4bits輸入。因為6bits的表示范圍大于4bits,就有可能出現(xiàn)4bits無法表示的情況(即溢出)
  • 對小數(shù)的處理:原理同上。四舍五入就是一種經(jīng)典的對小數(shù)截位的方式,類似的方法還有ceili,floor,nearest等等。

本文只討論整數(shù)部分的溢出截位處理,小數(shù)部分的處理下篇文章再說。對整數(shù)的截位處理,實際上就是對溢出的處理,其決定了當(dāng)運算結(jié)果大于該數(shù)位寬所能表示的最大值時,如果對溢出部分處理。通常有兩種對溢出的處理方式:

  • Saturate(飽和):一旦數(shù)據(jù)溢出,那么就將結(jié)果飽和處理為最大值或最小值(取決于正向溢出還是負向溢出)
  • Wrap(繞回/截斷):一旦數(shù)據(jù)溢出,那么就直接將溢出的高位截斷

將6bits的整數(shù)41截位到4bits,兩種溢出模式的處理結(jié)果如下:

image-20240416110157962


2、Saturate

因為有符號數(shù)和無符號存在表示范圍的區(qū)別,所以二者的溢出處理也存在一定的區(qū)別,接下來對兩種情況分別進行討論。

2.1、無符號數(shù)的Saturate

Saturate是當(dāng)數(shù)據(jù)溢出時,就直接用最大值或最小值來表示。因為無符號數(shù)不能表示負數(shù),因此不存在對于負數(shù)的飽和處理,只存在正向的飽和。例如要將1個6bits的數(shù)截斷到4bits,因為4bits能表示的最大值是15,那么所有大于15的數(shù),都直接用15來表示,示意圖如下:

將1個6bits的輸入Saturate為4bits的輸出,用Verilog可以這么寫:

module test(input		[5:0]	data_6bits,output  reg	[3:0]	data_4bits	
);always@(*)
beginif(data_6bits > 4'd15)			//溢出了data_4bits = 4'd15;			//飽和到最大值else				data_4bits = data_6bits;	//沒溢出則直接賦值
endendmodule 

除了直接用大于符號(data_6bits > 4’d15)來判斷是否溢出外,也可以這樣判斷:

if(|data_6bits[5:4]) //判斷高2位是否存在1,若存在則該數(shù)的值必定大于15

再寫個TB測試一下:因為輸入比較少,所以可以用窮舉法來測試,把輸入從最小值0開始累加最大值63,觀察輸出是否會被Saturate。

`timescale 1ns/1ns
module test_tb();reg		[5:0]	data_6bits;
wire	[3:0]	data_4bits;//例化被測試模塊
test	test_inst(.data_6bits		(data_6bits),.data_4bits		(data_4bits)
);initial begindata_6bits = 0;while(~(&data_6bits))begin			//當(dāng)輸入不全為1,即非最大值data_6bits = data_6bits + 1;	//從0開始累加1#5;end#20 $stop();
endendmodule

仿真結(jié)果是這樣的:

image-20240416121238935

當(dāng)輸入超過4bits位寬能表示的最大值15時,就會都飽和處理,即輸出為最大值15。

2.2、有符號數(shù)Saturate

對于有符號數(shù)的Saturate處理有兩種情況:

  • 正數(shù)太大無法表示,只能飽和到最大值。例如4bits有符號數(shù)最大只能表示 7,那么大于7的數(shù)就只能飽和處理為 7。
  • 負數(shù)太小無法表示,只能飽和到最小值。例如4bits有符號數(shù)最小只能表示 -8,那么小于-8的數(shù)就只能飽和處理為 -8。

當(dāng)數(shù)據(jù)溢出時,就直接用最大值或最小值來表示。因為無符號數(shù)不能表示負數(shù),因此不存在對于負數(shù)的飽和處理,只存在正向的飽和。例如要將1個6bits的數(shù)截斷到4bits,因為4bits能表示的最大值是15,那么所有大于15的數(shù),都直接用15來表示,示意圖如下:

5

例如,將1個6bits的有符號數(shù)Saturate為4bits,對于數(shù)據(jù)的正向溢出判斷和無符號數(shù)的Saturate是類似的,只要判斷除了符號位的多出來的高位是否有1即可。

對于數(shù)據(jù)的負數(shù)方向溢出判斷要麻煩一點,首先我們要知道,對于一個有符號的負數(shù),在其高位擴展符號位,其數(shù)值是不會改變的。例如:

10\110\1110\11110,它們表示的都是 -2。

把6bits截位到4bits,只要判斷它的高三位(因為討論的是負數(shù),所以最高位肯定是1)是否都為1就行了,如果是的話,說明高3位可是視為是1位符號位的擴展,數(shù)據(jù)的表示范圍等價于4bits的表示范圍。如果不為全1,則說明比4bits的表示范圍要大,即數(shù)據(jù)產(chǎn)生了溢出。

綜上,用Verilog可以這么寫:

module test(input		[5:0]	data_6bits,output  reg	[3:0]	data_4bits	
);always@(*)
beginif(~data_6bits[5] && (|data_6bits[4:3]))			//判斷條件(正數(shù) && 溢出),即正向溢出了data_4bits = 4'b0111;							//飽和到最大值7else if(data_6bits[5] && ~(&data_6bits[4:3]))		//判斷條件(負數(shù) && 溢出),即負向溢出了			data_4bits = 4'b1000;							//飽和到最小值-8else	data_4bits = data_6bits;						//沒溢出則直接賦值
endendmodule 

仍然用上面的TB,仿真結(jié)果如下:

image-20240416132626605


3、Wrap

Wrap從字面上理解是繞回,什么是繞回呢?比如一塊手表,它只能表示0點~12點,超出了12點的話,它就會繞回到0點再重新開始。比如13點的表示就是到了12點后,再走到了1點。

對數(shù)據(jù)的Wrap處理也是類似的,比如4bits的無符號數(shù)最多只能表示1111(15),這個時候如果再加1就是16了,16是表示不了的。Saturate是直接表示最大值15,而Wrap則是重新回到開始表示0。類似的,17就Wrap到1,18就Wrap到2,19就Wrap到3,依此類推。示意圖如下:

對于有符號數(shù)的Wrap處理也是一樣的截掉高位,但是因為有符號數(shù)可以表示負數(shù),所以它的繞回是從最小的負數(shù)開始的,例如最大的4bits有符號數(shù)是0111即7,溢出后是1000即-8,示意圖如下:

Wrap處理用Verilog是很好實現(xiàn)的,因為它本質(zhì)上相當(dāng)于截掉高位,而截掉高位這個操作是可以被綜合工具自動實現(xiàn)的,它甚至都不需要消耗任何邏輯資源。比如,將1個6bits的輸入Wrap為4bits的輸出,用Verilog可以這么寫:

module test(input		[5:0]	data_6bits,output  	[3:0]	data_4bits	
);assign	data_4bits = data_6bits;		//直接賦值即可,工具會自動截位
//等價于下面的語句
//assign	data_4bits = data_6bits[3:0];endmodule 

用上面的TB測試就行,無符號數(shù)的測試結(jié)果如下:

image-20240416135556104

有符號數(shù)的測試結(jié)果如下:

image-20240416135211386

可以看到當(dāng)輸入大于4bits能表示的最大值后,就會回到最小值重新開始,相當(dāng)于截掉了高位。


4、總結(jié)

  • Saturate相當(dāng)于溢出時,將結(jié)果保留在最大值或最小值;而Wrap則是溢出時重新繞回到起點。
  • 相對來說Saturate損失的精度比較小,結(jié)果較為準確,但是消耗的硬件資源比Wrap方式要多;Wrap不需要消耗硬件資源,因為它實際上相當(dāng)于截掉高位,等于是沒有什么處理,精度損失大,結(jié)果不太準確(尤其是有符號數(shù)的Wrap),只適用于特定場合。
http://www.risenshineclean.com/news/5158.html

相關(guān)文章:

  • 上海網(wǎng)站建設(shè)備案號鄭州seo代理外包公司
  • 富錦建設(shè)局網(wǎng)站現(xiàn)在網(wǎng)絡(luò)推廣方式
  • 自己搭建服務(wù)器 發(fā)布網(wǎng)站 域名如何申請秦皇島seo招聘
  • 網(wǎng)站的建設(shè)屬于無形資產(chǎn)海外市場推廣策略
  • asp的網(wǎng)站為企業(yè)策劃一次網(wǎng)絡(luò)營銷活動
  • 東莞網(wǎng)站建設(shè)在哪里福建百度seo排名點擊軟件
  • 網(wǎng)站開發(fā)公司的選擇百色seo外包
  • 廈門網(wǎng)站建設(shè)公seo關(guān)鍵詞優(yōu)化推廣哪家好
  • 三水建設(shè)網(wǎng)站國外推廣都是怎么推廣
  • 大慶百度做網(wǎng)站多少錢外貿(mào)國際網(wǎng)站推廣
  • 用帝國做的網(wǎng)站只收錄首頁百度一下百度搜索
  • 電商系統(tǒng)開發(fā)解決方案鎮(zhèn)江百度seo
  • 門戶網(wǎng)站建設(shè)情況總結(jié)淘寶指數(shù)查詢?nèi)肟?/a>
  • 手機表格制作軟件排名優(yōu)化培訓(xùn)
  • 青島市住房和城鄉(xiāng)建設(shè)局官方網(wǎng)站營銷傳播服務(wù)
  • 優(yōu)化服務(wù)平臺windows優(yōu)化大師win10
  • 網(wǎng)站制作教程企業(yè)網(wǎng)站的域名是該企業(yè)的
  • wordpress優(yōu)化版seo靜態(tài)頁源碼
  • 做網(wǎng)站怎么插入圖片推廣宣傳
  • 廣州市政府門戶網(wǎng)站淘寶運營培訓(xùn)班學(xué)費大概多少
  • 香港空間的網(wǎng)站會關(guān)嗎網(wǎng)站接廣告平臺
  • 上饒做網(wǎng)站的公司杭州seo專員
  • 用html做女裝網(wǎng)站快速seo排名優(yōu)化
  • 網(wǎng)站開發(fā) 項目的招標(biāo)文件東莞搜索網(wǎng)絡(luò)優(yōu)化
  • 商城用什么系統(tǒng)做網(wǎng)站競價推廣代運營服務(wù)
  • vs做網(wǎng)站通過e瀏覽器馮耀宗seo課程
  • 網(wǎng)站建設(shè) 做一個網(wǎng)站需要多少錢免費自媒體網(wǎng)站
  • ecshop做企業(yè)網(wǎng)站安徽新站優(yōu)化
  • 武漢高端網(wǎng)站定制設(shè)計打開百度網(wǎng)站
  • 模板建站推薦東方靠譜seo整站優(yōu)化一年價格多少