微機原理與系統設計筆記6 | 存儲器系統設計

来源:https://www.cnblogs.com/Roboduster/archive/2023/02/20/17137694.html
-Advertisement-
Play Games

本部分介紹存儲器及其擴展方法,基本的存儲器晶元功能,8088系統的存儲器擴展設計、8086系統的存儲器擴展設計以及解碼電路的手寫畫圖。 ...



  • 打算整理彙編語言與介面微機這方面的學習記錄。本部分介紹存儲器及其擴展方法。

  • 參考資料

    • 西電《微機原理與系統設計》周佳社
    • 西交《微機原理與介面技術》
    • 課本《彙編語言與介面技術》王讓定
    • 小甲魚《彙編語言》

1. 存儲器的分類

  • 外存:磁碟、U盤、光碟等,外存嚴格來說屬於IO設備。

    順序存儲器和隨機存儲器:讀寫數據的方式不同。

  • 記憶體:本文主要講記憶體。

    • 只讀存儲器:存放系統管理程式,比如電腦主板ROM里的BIOS程式。

      • ROM:一次性寫,只讀。

      • PROM:一次性可編程、只讀;

        每個新的晶元為空片:如果以位元組為單位,則為FFH。

      • EPROM:常用,紫外線可擦除ROM,藉助專用寫入器可以將程式寫入(寫入的時候要先擦乾凈)。

        目前常用型號:2716(2K乘8位元組==2KB),2732,2764,27128。

        後兩者目前常用。

      • E2PROM:電可擦除ROM。可以反覆寫入,先擦除乾凈後寫,且掉電後信息不丟失

        常用是28系列。

    • 隨機讀寫存儲器RAM:能讀能寫,但是掉電後信息丟失。

      • SRAM:靜態,像寄存器/鎖存器。

        常用型號6264(8k×8bit==8KB)、62128、62256、2114(1K乘半位元組,需要用兩個2114併成一個位元組--位擴展)

      • DRAM:動態,像電容,存1相當於給電容充電,所以需要反覆給DRAM上電刷新(讀出來再寫入,刷新周期要滿足一定條件,太長就不能讓系統辨認原有數據了)。

        應用DRAM需要設計地址刷新電路,而這個刷新電路很複雜,所以自己設計系統一般使用SRAM。

        DRAM集成度更高(雖然較於SRAM速度慢一點點),而電腦使用的都是DRAM。

        本章主要是記憶體中ROM和SRAM的設計。

  • 從結構角度的分類/微機系統中存儲器的層次結構:

    1

2. 存儲器主要技術指標

  1. 容量

    如果要設計32KB,62256(32K乘8bit==32KB)需要1片,2114需要64片

    這裡儘量選擇接近的晶元來做,比如2114的話占用面積大且對電源要求高。

  2. 速度

    • 存取時間:啟動一次存儲器操作到完成此次操作的時間

    • 存儲周期:兩次獨立的存儲器單元操作的最小時間間隔

      可以從半導體公司手冊查到。

    • 要求:(針對8086讀寫周期需要4個clk周期這一點)

      下麵的公式應該不會考,瞭解吧:

      • 存儲器晶元的最小讀出時間:\(t_{cyc}(R)<4T-t_{da}-t_D-T\)

        • T:8086時鐘周期
        • tda:8086的地址匯流排延時時間
        • tD:各種因素引起的匯流排附加延時。匯流排長度、附加邏輯電路、匯流排驅動器等之和、

        減去一個T是因為工程上的要求。

      • 存儲器晶元的最小寫入時間:\(t_{cyc}(W)<4T-t_{da}-t_D-T\)

  3. 存儲帶寬:單位時間傳輸數據容量的大小。

    帶寬(B,MB/s)==存儲器時鐘頻率(F,MHZ)*存儲器數據匯流排位數(D)/8

    \(B=F\times D/8\)

  4. 非易失性:是選擇ROM還是RAM。

  5. 可靠性:平均故障時間間隔。

  6. 功耗、成本等

3. 幾種常用存儲器晶元介紹

3.1 SRAM 6264

8K×8bit,有13根地址線(編碼8k),數據引腳8根(引腳8bit),此外還需要片選信號。

6264有兩個片選信號CS1fei和CS2:

  • CS2高電平,CS1fei低電平則為選中。根據13根地址線選中的單元進行寫或讀操作
  • 未選中則8根數據線呈現高阻態,與系統匯流排隔離。
  • 也可以將CS1常接+5V來改造為單片選。

還有一個輸出允許腳OEfei,片選有效且輸出允許有效時,可以輸出數據。一個寫允許腳WEfei,與片選結合可以寫入數據。

3

註意不能同時寫或讀。OE和WE只能一個有效。

與8088CPU的地址匯流排結合起來來看,則8086的低13位地址線A12A0直接定址6264內部,這叫片內定址;而高位地址線A19A13,片外定址,也就是決定是1MB的哪一個8KB,引出解碼作為控制信號,作為片選信號。這一點比較好理解。

註意這裡8088沒有奇偶地址的概念,比較簡單。

8086CPU的地址匯流排。則A1A13來片內定址,A0決定是奇還是偶地址,高位A14A19片外定址。

  • 如果A0=0,則取出A13~A0的16KB位元組的8K位元組,與系統數據匯流排的低8位相連。
  • A0=1,則取出A13~A0的16KB位元組的8K位元組,與系統數據匯流排的高8位相連。

而如果用6264給8088微機系統設計32KB的SRAM:

  • 需要4片
  • 地址線對聯8088地址線,數據線也對聯。
  • 使CS2常有效
  • OEfei,讀允許。在最大方式下,與MEMRfei相連;最小方式下,與RDfei相連。
  • WEfei,寫允許。最大方式下,與MEMWfei相連。最小方式下,與WRfei相連。
  • CS1fei片選信號。地址線的高位(接入解碼電路產生控制信號,再接過來片選。

上述思路是位元組擴展,P198 6.4.2

註意解碼電路不僅是地址,還有控制信號。比如8088最小方式中有IO/Mfei,表示對存儲器操作。

這裡實際只需要兩位A13和A14來選擇晶元塊,同時也可以再加上其他不變的高位地址線,參與解碼

2

3.2 SRAM:Intel 2114

1K×4bit。有10根地址線,4位數據線。

4
  • CSfei,低電平選中
  • WEfei,管理讀寫,低電平寫入存儲器,高電平輸出。

使用2114給8088系統擴充4KB存儲系統:

  • 需要8片

  • 先兩兩相並位擴展,再串聯位元組擴展。

    4

3.4 EPROM 2764

8K×8,所以13根地址線,8根數據線

6
  • CEfei:片選信號
  • OEfei:片選有效且低電平,讀出數據(也就是只讀狀態)
  • VCC:工作電壓
  • VPP:編程電壓輸入,需要查公司型號手冊
  • PGMfei:低電平(負脈衝),編程允許引腳

要對2764先擦除後寫入數據:

  1. 擦除。

  2. OEfei無效,CEfei有效。

  3. 不是直接接到地址線和數據線,兩邊各需要一個鎖存。將地址和數據都鎖存起來

  4. 當上層命令來到,VPP電壓加上,PGM加負脈衝,在這個負脈衝期間,鎖存也解除,向選中地址寫入相應數據

  5. CE OE有效,將寫入的數據讀出(無鎖存器的通道),比較是否符合預期,如果符合,則寫入完成。

    如果不相等,可重新操作,如果多次操作不行,可能地址單元損壞。

hhh,學了這個可以做編程器了...

2764的正常工作/只讀模式:

  • 只需要考慮地址(奇偶等等)、數據(單向輸出)、CE片選信號、OE連接MEMRfei,不考慮VPP和PGM(接+5V即可)

4. 存儲器擴展設計

4.1 存儲器地址解碼方法

  • 全地址解碼方法:全部地址線來解碼,浪費硬體設計資源(因為地址線都要引過來),但是可以唯一確定一個存儲單元的地址。
  • 部分地址解碼方法:解碼電路簡單,但會發生地址空間重疊。

例題見書P200 6.1

4.2 8088系統存儲器擴展

P205 例6.5

6
  • 第一題,簡單,16KB為2的14次方,16進位是4000H,地址範圍就是80000H~83FFFH

  • 第二題:

    1. 進行地址分析:

      • 需要兩片6264
      • 低13位片內選址,A13選擇兩片之一
      • A19~A14六根線,在此題不變,且為10_0000
      • 這樣就保證了連續地址。
    2. 邏輯電路(不用型號):

      • 需要加入控制信號,表明是對存儲器操作。

      整體設計如下圖所示:

    8

    如果使用74LS138來做解碼器(這個我沒有學,跟上圖原理相同,只不過封裝了一些東西)

  • 第三題:用到一點點彙編知識。這裡55H和AAH數據圖案檢測,給要檢測的RAM存儲區每個地址單元分別寫入55H(0101_0101)和AAH(1010_1010),並讀出比較是否符合預期,如果符合,則讀寫正常。如果不正常,則應作出相應出錯報警提示。

    MOV AX,8000H
    MOV DS,AX
    MOV SI,0
    MOV CX,16*1024
    MOV AL,55H
    NEXT1: MOV [SI], AL
    	   MOV BL, [SI]
    	   CMP BL, AL
    	   JNE ERROR ;不相等則轉到ERROR
    	   INC SI ;地址增加繼續比較
    	   LOOP NEXT1
    	   MOV SI,0
    	   MOV CX,16*1024
    	   MOV AL, 0AAH
    NEXT2: MOV [SI],AL
    	   MOV BL,[SI]
    	   CMP BL,AL
    	   JNE ERROR
    	   INC SI
    	   LOOP NEXT2
    	   ...
    ERROR: ...
    
    • 數據線粘連故障:檢測思路就是55H和AAH
    • 地址線鏈橋故障:先把存儲器刷成00H,然後向00H處寫入01H,檢測其他地址單元是否改變,00H地址單元左移為02H,看其他地址單元內容是否改變......這樣就可以找出地址線粘連發生的不同地址內容的重寫問題。
    • BIOS中自檢就是排除這些故障,程式會更加豐富。

4.3 8086系統存儲器擴展

擴展原理基本相同,相較於8088,多的是奇偶地址的片選:

9
  • 上圖沒有體現出來的是,A0和BHEfei還要跟相應控制信號一起進行邏輯運算才行,比如最大方式下MEMRfei、MEMWfei和M/IOfei,最小方式下RDfei、WRfei和M/IOfei
  • 此外512k的晶元上還應有CE和OE,分別是
    • CEfei:片選信號,
    • OEfei:讀允許
    • WEfei:寫允許

P208 例6.6:

10
  • 上圖改為74LS138,但這個器件我不總結了,我沒學。

  • 設計圖如下圖所示:

  • 11

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 運算符 算術運算符 算數運算符: + - * / // % ** # + var1 = 7 var2 = 90 res = var1 + var2 print(res) # 97 # - var1 = 7 var2 = 90 res = var1 - var2 print(res) # 83 # * ...
  • synchronized 是 Java 語言的一個關鍵字,它允許多個線程同時訪問共用的資源,以避免多線程編程中的競爭條件和死鎖問題。 ...
  • 一 背景 在我們的工作中我們經常有一種場景就是要使用到隊列,特別是對於這樣的一種情況:就是生產的速度明顯快於消費的速度,而且在多線程的環境下消息的生產由多個線程產生消息的消費則沒有這種限制,通過使用隊列這種方式能夠很大程度上將多線程的問題通過入隊的方式變成單個線程內的消息的聚合,然後通過單獨的線程進 ...
  • Dapper 是一個 容易上手,輕量級,靈活高效,開源的 迷你 ORM,由 Stack Overflow 團隊的 Sam Saffron 出品,你可以利用 Dapper 簡化數據訪問並且支持高性能, 還有一點, Dapper 提供了很多非同步方法,本篇我們就來聊一聊如何在 ASP.NET Core 中 ...
  • 架構說明: 由淺入深,我們暫時不考慮分散式,安裝Jenkins到用戶伺服器進行CICD 需要兩台伺服器 Gitlab:192.168.232.128:12080 源代碼倉庫,可以參考《安裝gitlab》 用戶伺服器:192.168.232.130, 通過Jenkins自動構建服務:1、git clo ...
  • 1、功能 1.1、視窗快速“上下分屏” Windows雖名叫“窗子”。 可它預設的“視窗分屏”功能卻簡陋到了異常: 將視窗拖到屏幕的左右邊緣,只能實現最基本的左右二分屏; 屏幕的下邊緣由於被任務欄占據,將視窗拖到這裡不會觸發任何分屏動作,直接浪費一個觸發區; 而“視窗拖到屏幕上邊緣”的動作,已經預設 ...
  • 背景 在 vim 中使用 fzf.vim 插件可以進行方便的搜索文件, 源碼TAG, GIT 記錄等, 最近抽空看了下 BTags 命令在 c, c++ 文件中, 無法顯示頭文件中的函數聲明 標簽問題. 比如在頭文件中有如下一個函數聲明, 使用 BTags 命令是無法顯示出這個函數原型的. /* 函 ...
  • 準備工作:需要下載好docker,這docker-compose,很簡單,這裡不做介紹。 1、使用docker安裝jenkins鏡像,這裡安裝的最新的jenkins版本,也可指定版本,按需選擇 docker pull jenkins/jenkins:latest 2、查詢jenkins鏡像是否安裝成 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...