【地址區間劃分】

地址區間劃分

  • 1 decode_addr
    • 1.1 地址區間
    • 1.2 變式

本篇博客主要介紹對地址區間劃分的一個比較巧妙參數化的做法。

1 decode_addr

遇到一個master轉多個slave時,不可避免需要進行對addr總線進行分配地址區間來進行選中;
在這里給出一個可復用且設計思想比較巧妙的做法;

parameter SLAVE0_BASE = 32'h00000000;     
parameter SLAVE0_MASK = 32'hFFE00000;      
parameter SLAVE1_BASE = 32'h00200000;      
parameter SLAVE1_MASK = 32'hFFE00000;function automatic [1:0] decode_address;input [ADDR_WIDTH-1:0] addr;beginif ((addr & SLAVE0_MASK) == SLAVE0_BASE)decode_address = 2'b00;   // 選擇從設備0else if ((addr & SLAVE1_MASK) == SLAVE1_BASE)decode_address = 2'b01;   // 選擇從設備1else decode_address = 2'b10;   // 默認或錯誤end
endfunction

1.1 地址區間

根據代碼中的參數和地址解碼邏輯,地址范圍計算如下:

從設備0 (SLAVE0) 地址范圍:
基地址:32’h00000000
掩碼:32’hFFE00000 (高11位為1,低21位為0)
有效地址范圍:32’h00000000 ~ 32’h001FFFFF
計算方式:基地址 + (2^21 - 1)
從設備1 (SLAVE1) 地址范圍:

基地址:32’h00200000
掩碼:32’hFFE00000 (同上)
有效地址范圍:32’h00200000 ~ 32’h003FFFFF
計算方式:基地址 + (2^21 - 1)

地址匹配規則:
地址高11位必須嚴格匹配基地址的高11位
低21位可以是任意值(0~0x1FFFFF)
每個從設備的地址空間大小為2MB(2^21字節)

1.2 變式

在這里我想選擇地址區間是1MB的時候,只需修改參數即可,代碼如下:

parameter SLAVE0_BASE = 32'h00000000;     
parameter SLAVE0_MASK = 32'hFFF00000;      
parameter SLAVE1_BASE = 32'h00100000;      
parameter SLAVE1_MASK = 32'hFFF00000;function automatic [1:0] decode_address;input [ADDR_WIDTH-1:0] addr;beginif ((addr & SLAVE0_MASK) == SLAVE0_BASE)decode_address = 2'b00;   // 選擇從設備0else if ((addr & SLAVE1_MASK) == SLAVE1_BASE)decode_address = 2'b01;   // 選擇從設備1else decode_address = 2'b10;   // 默認或錯誤end
endfunction

從設備0 (SLAVE0) 地址范圍
基地址:32’h00000000
掩碼:32’hFFF00000 (高12位為1,低20位為0)
有效地址范圍:32’h00000000 ~ 32’h000FFFFF
地址空間大小:1MB (2^20字節)
匹配規則:地址高12位必須等于000(二進制)

從設備1 (SLAVE1) 地址范圍
基地址:32’h00100000
掩碼:32’hFFF00000 (同上)
有效地址范圍:32’h00100000 ~ 32’h001FFFFF
地址空間大小:1MB (2^20字節)
匹配規則:地址高12位必須等于001(二進制)

關鍵變化說明(相比原配置)
掩碼改為12位:FFE00000 → FFF00000(地址匹配精度從11位提高到12位)
空間大小減半:每個從設備地址空間從2MB變為1MB
設備1基地址調整:00200000 → 00100000(間隔從2MB變為1MB)

地址解碼示例
0x00012345 → 匹配設備0(高12位=0x000)
0x001ABCDE → 匹配設備1(高12位=0x001)
0x00200000 → 不匹配任何設備(返回2’b10)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83763.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83763.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83763.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql復合查詢mysql子查詢

基礎表結構創建 表結構包含主外鍵約束和字符集配置,確保數據完整性 部門表 CREATE TABLE dept (deptno int NOT NULL COMMENT 部門編號,dname varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 部門名稱,loc varchar(20) CHARACTE…

vlan(虛擬局域網)邏輯圖解+實驗詳解

VLAN(Virtual Local Area Network,虛擬局域網) 是一種通過邏輯方式(非物理連接)將網絡設備劃分為多個獨立廣播域的技術。它允許管理員在同一個物理網絡中創建多個隔離的虛擬網絡,從而提升網絡的安全性、靈…

2025年—Comfy UI 和 Stable Diffusion底層原理

為什么要先講SD原理 ? 邏輯理解: ComfyUI是節點式操作,需要自行搭建工作流,理解原理才能靈活定制工作流學習效率: 基礎原理不懂會導致后續學習吃力,原理是掌握ComfyUI的關鍵核心價值: ComfyUI最有價值的功能就是自主搭建工作流&a…

深入理解C#中的Web API:構建現代化HTTP服務的完整指南

在當今的軟件開發領域,構建高效、可擴展的Web服務已成為一項基本需求。作為.NET開發者,C#中的Web API框架為我們提供了創建RESTful服務的強大工具。本文將全面探討Web API的核心概念、實現細節和最佳實踐,幫助您掌握這一關鍵技術。 一、Web A…

起重機指揮人員在工作中需要注意哪些安全事項?

起重機指揮人員在作業中承擔著協調設備運行、保障作業安全的關鍵職責,其安全操作直接關系到整個起重作業的安全性。以下從作業前、作業中、作業后的全流程,詳細說明指揮人員需注意的安全事項: 一、作業前的安全準備 資質與狀態檢查&#xff…

【高等數學】傅里葉級數逼近例子

f ( x ) π 2 ? ∣ x ∣ f(x)\frac{\pi}{2}-|x| f(x)2π??∣x∣ 由于是偶函數只需要求 cos ? ( n x ) , 1 \cos(nx),1 cos(nx),1 的系數 a n 0 a_n 0 an?0, n n n 是偶數 a n 1 ( 2 n ? 1 ) 2 a_n \frac{1}{(2n-1)^2} an?(2n?1)21?, n n n 是奇數 則 f ( x )…

PowerBI企業運營分析—全動態盈虧平衡分析

PowerBI企業運營分析—全動態盈虧平衡分析 歡迎來到Powerbi小課堂,在競爭激烈的市場環境中,企業運營分析平臺成為提升競爭力的核心工具。 該平臺通過整合多源數據,實現關鍵指標的實時監控,從而迅速洞察業務動態,精準…

用ApiFox MCP一鍵生成接口文檔,做接口測試

日常開發過程中,尤其是針對長期維護的老舊項目,許多開發者都會遇到一系列相同的困擾:由于項目早期缺乏嚴格的開發規范和接口管理策略,導致接口文檔缺失,甚至連基本的接口說明都難以找到。此外,由于缺乏規范…

26考研 | 王道 | 計算機組成原理 | 三、存儲系統

26考研 | 王道 | 計算機組成原理 | 三、存儲系統 文章目錄 26考研 | 王道 | 計算機組成原理 | 三、存儲系統3.1 存儲系統基本概念3.2 主存儲器1. 主存儲器的基本組成2. SRAM與DRAM1.DRAM和SRAM對比2.DRAM的刷新3.DRAM的地址線復用技術 3. 只讀存儲器ROM4.雙端口RAM和多模塊存儲…

IDEA 開發PHP配置調試插件XDebug

1、安裝PHP環境 為了方便,使用的PhpStudy。 安裝路徑:D:\resources\phpstudy_pro\Extensions\php\php7.3.4nts 2、下載Xdebug Xdebug: Downloads 選擇對應的版本下載,本次使用的是7.3。 3、配置Xdebug 在php.ini中添加Xdebug配置。 D…

Go 語言的 GC 垃圾回收

序言 垃圾回收(Garbage Collection,簡稱 GC)機制 是一種自動內存管理技術,主要用于在程序運行時自動識別并釋放不再使用的內存空間,防止內存泄漏和不必要的資源浪費。這篇文章讓我們來看一下 Go 語言的垃圾回收機制是如…

60天python訓練計劃----day45

DAY 45 Tensorboard使用介紹 知識點回顧: tensorboard的發展歷史和原理tensorboard的常見操作tensorboard在cifar上的實戰:MLP和CNN模型 之前的內容中,我們在神經網絡訓練中,為了幫助自己理解,借用了很多的組件&#x…

RocketMQ基礎概念的理解

1、生產者 生產者和主題之間存在多對多關系。一個生產者可以向多個主題發送消息,一個主題可以接收來自多個生產者的消息。這種多對多關系有助于提高性能擴展和災難恢復能力。 2、消費者以及消費者組 一個隊列可以被多個消費者(其中這多個消費者必須分…

Flash燒錄速度和加載配置速度(純FPGA ZYNQ)

在工程綜合完成或者implement完成后,打開綜合設計或者實現設計。 toots--->Edit Device Properties--->打開比特流設置 將bitstream進行壓縮 上圖中,時鐘頻率選擇的檔位有限,最大為66MHZ io的bus width可以設置為x1,x2,x4 vivado在設計…

優化09-表連接

一、表連接介紹 表連接類型 表連接是關系型數據庫關鍵特性,在關系型數據庫中,表連接分為三類:循環嵌套連接(Nested Loops Join)、哈希連接(Hash Join)、合并排序連接(Merge Sort J…

Dify工作流實踐—根據word需求文檔編寫測試用例到Excel中

前言 這篇文章依賴到的操作可查閱我之前的文章: dify里的大模型是怎么添加進來的:在Windows本地部署Dify詳細操作 flask 框架app.route()函數的開發和調用:PythonWeb開發框架—Flask工程創建和app.route使用詳解 結構化提示詞的編寫&…

AWTK 嵌入式Linux平臺實現多點觸控縮放旋轉以及觸點丟點問題解決

前言 最近涉及海圖的功能交互,多點觸摸又開始找麻煩。 在PC/Web平臺awtk是通過底層的sdl2庫來實現多點觸摸,但是在嵌入式Linux平臺,可能是考慮到性能原因,awtk并沒有采用sdl庫來做事件處理,而是自己實現一個awtk-lin…

Diffusion Planner:擴散模型重塑自動駕駛路徑規劃(ICLR‘25)

1. 概述 2025年2月14日,清華大學AIR智能產業研究院聯合毫末智行、中科院自動化所和香港中文大學團隊,在ICLR 2025會議上發布了Diffusion Planner——一種創新性的基于Diffusion Transformer的自動駕駛規劃模型架構。該系統聯合建模周車運動預測與自車行…

ESP32對接巴法云實現配網

目錄 序言準備工作巴法云注冊與使用Arduino準備 開發開始配網 序言 本文部分內容摘抄原創作者巴法云-做優秀的物聯網平臺 代碼有部分修改并測試運行正常 巴法云支持免費用戶通過開發對接實現各智能音箱設備語音控制智能家居設備,并有自己的App進行配網和控制&…

深度學習習題3

1.訓練神經網絡過程中,損失函數在一些時期(Epoch)不再減小, 原因可能是: 1.學習率太低 2.正則參數太大 3.卡在了局部最小值 A1 and 2 B. 2 and 3 C. 1 and 3 D. 都是 2.對于分類任務,我們不是將神經網絡中的隨機權重…