被二進位制和十六進製製給搞暈

2021-06-26 12:24:06 字數 791 閱讀 7795

剛開始接觸ti的dsp-tms320f2812,總會遇到很多問題。苦想了一陣,頓悟,不過有以下幾點需要宣告:

1)f2812的外部儲存器的xintf zone6的定址範圍為0x10 0000 ~ 0x18 0000;

2)f2812的外部位址匯流排為xa [18:0] ;

3)f2812的外部接有256k的sram,位址匯流排為xa [17:0] 。

困惑是:既然f2812的外部儲存器的xintf zone6的定址範圍為0x10 0000 ~ 0x18 0000,那麼外部的sram的0x00 0000 ~ 0x0f ffff的儲存空間就被白白浪費掉了。

不仔細推敲,很容易進入這個誤區。

首先,外部儲存器的xintf zone6的定址範圍為0x10 0000 ~ 0x18 0000,這裡的位址是用24位的二進位制來表示的,而事實上,f2812的內部位址匯流排共22位,用來表示內部位址匯流排的24位二進位制實際只利用了22位,最高兩位為0,而起始位址0x10 0000中的「1」是在xa[20]。

再看看外部位址匯流排xa [18:0] ,共19位,也就是說,外部的位址匯流排僅僅只是內部資料匯流排的低19位xa [18:0] 。只要外部儲存器的位址範圍小於等於0x00 0000 ~ 0x07 ffff時,就不會出現儲存空間被浪費,即每乙個位址空間都會被訪問。

f2812的外部接有256k的sram,位址匯流排為xa [17:0] ,其定址空間為0x00 0000 ~ 0x07 ffff,當dsp要訪問外部的sram時,外部位址匯流排xa [17:0] 去讀寫sram,與其餘的高4位位址無關。

這樣,就豁然開朗了,原來是被二進位制和十六進製製給搞暈了!

十六進製制位元組 十六進製制轉二進位制

做專案也將近一年的時間了。從一開始就經常提到 乙個十六進製制位元組 然而一開始就是迷惑的,直到現在。乙個十六進製制位元組,比如 ff。周圍的人經常說這是乙個十六進製制位元組。然後我就想,這不是兩個字元嗎,分別是f 和f,乙個字元是乙個位元組,兩個字元是兩個位元組,怎麼就成乙個十六進製制位元組,就成乙...

進製轉換 二進位制轉十六進製制 十六進製制轉十進位制

這幾天在做乙個與plc互動的系統,plc會傳過來一些指令,這些指令是二進位制的格式,要轉為4位十進位制的指令來讀,下面是 部分 public class byteschange int beginindex 0 int length 16 string instructions while true...

二進位制 八進位制和十六進製制

我們平時使用的數字都是由 0 9 共十個數字組成的,例如 1 9 10 297 952 等,乙個數字最多能表示九,如果要表示 十 十一 二十 九 一百等,就需要多個數字組合起來。例如表示 5 8 的結果,乙個數字不夠,只能 進製 用 13 來表示 這時 進一位 相當於十,進兩位 相當於二十。因為逢十...