芯片架构期末不挂科

第一章:CPU 导读 ------ 揭秘计算机的"大脑"

写在前面: 这一章虽然是导读,但却藏着考试必考的"送分题"。根据我们的《期末题型》文档,CPU 的定义功能执行指令的 5 个阶段是重点中的重点!

1. 什么是 CPU?(定义与功能)

CPU (Central Processing Unit) ,即中央处理器。如果把计算机比作一个人,那 CPU 就是他的大脑

CPU 的核心功能:

  1. 执行指令:听从程序的"指挥",把代码变成动作。

  2. 处理数据:算术加减法、逻辑比较等。

  3. 控制协调:指挥内存、硬盘、显卡等设备和谐工作。

考试陷阱: CPU 不负责 永久存储海量信息(那是硬盘的事),也不直接负责显示图像(那是 GPU 的事)。

2. CPU 的组成结构(三驾马车)

CPU 内部主要由三大部分协同工作:

  • 运算器(ALU):负责计算。

  • 控制器(CU):负责"发号施令",解析指令并产生控制信号。

  • 寄存器(Register):负责临时存放数据,速度极快。

3. 芯片设计理念的演进

这是简答题的一个潜在考点:

  • 早期:自底向上 (Bottom-Up)。像手搭积木,先画晶体管,再拼电路。

  • 现代:自顶向下 (Top-Down) 。先定义架构和功能,用 Verilog (HDL) 编写代码,最后由 EDA 工具自动综合成电路。

  • EDA 工具:不仅仅是画图软件,它贯穿设计、验证、仿真到制造的全过程。

4. ⭐⭐⭐ 重中之重:指令执行的 5 个阶段

顺序不能乱,功能不能混!

  1. 取指 (IF - Instruction Fetch)

    • 操作 :根据 PC (程序计数器) 的值从存储器中读出指令。

    • 关键部件:PC、指令存储器。

  2. 译码 (ID - Instruction Decode)

    • 操作 :解析指令码,确定指令类型,并从 Register File (寄存器堆) 读出操作数。

    • 关键部件:译码器、寄存器堆。

  3. 执行 (EX - Execute)

    • 操作:进行算术或逻辑运算,或者计算访存地址。

    • 关键部件ALU (算术逻辑单元)

  4. 访存 (MEM - Memory Access)

    • 操作:如果是 Load 指令则读内存,Store 指令则写内存。

    • 关键部件:数据存储器。

  5. 写回 (WB - Write Back)

    • 操作:将运算结果或读出的数据写回到目标寄存器。

    • 关键部件:寄存器堆。

5. 期末冲刺模拟题(本章强化版)

一、 选择题(15分题型模拟)

  1. CPU 中负责解析指令含义的部件是?

    • A. ALU

    • B. 控制器 (CU)

    • C. 寄存器

    • D. 存储器

    • 答案:B

  2. 在 CPU 的 5 个阶段中,计算"A + B"这个加法动作发生在哪个阶段?

    • A. IF

    • B. ID

    • C. EX

    • D. WB

    • 答案:C

  3. 下列关于 EDA 工具的说法,错误的是?

    • A. EDA 是电子设计自动化

    • B. EDA 可以显著提高设计效率

    • C. EDA 只用于芯片的物理版图绘制

    • D. EDA 贯穿芯片研发和生产周期

    • 答案:C

二、 判断题(10分题型模拟)

  1. CPU 的主要功能包括永久存储大量信息。( ) ------

  2. 现代芯片设计通常采用"自底向上"的设计方法。( ) ------

  3. 指令执行的顺序一定是先译码再取指。( ) ------

  4. 所有的指令在执行时都必须经过"访存"阶段去读写数据存储器。( ) ------ 注:如普通的 add 指令不访问数据存储器,但仍占用该时钟周期或跳过

三、 简答题(40分题型模拟)

问:请详细阐述 CPU 指令执行的五个阶段及其逻辑顺序。 答:

  1. 取指 (IF):从内存获取指令。

  2. 译码 (ID):翻译指令并读寄存器。

  3. 执行 (EX):利用 ALU 进行运算。

  4. 访存 (MEM):对数据存储器进行读写。

  5. 写回 (WB) :将结果写回寄存器。 (逻辑顺序:IF -> ID -> EX -> MEM -> WB

这一章你拿下了!记住,ID 阶段读寄存器,WB 阶段写寄存器,这个细节在后面讲"数据相关"时非常重要!

第二章:数字电路与 Verilog ------ 筑基行动

老师提醒: 这一章不仅考理论(选择、判断),更是后面代码填空题的基础。如果你分不清"普通编码"和"优先编码",或者搞不懂"补码加减法",后面的 CPU 设计实验会非常痛苦。请务必拿下!

1. 基础逻辑门与常用电路

在 Verilog 中,我们主要使用连续赋值语句 (assign) 来描述这些电路。

  • 基础门:与(&)、或(|)、非(~)、异或(^)。

  • 译码器 (Decoder):把二进制码翻译成独热码(One-hot)。

  • 多路选择器 (MUX) ※※※

    • 功能:从多个输入信号中,根据选择信号(Select)选出一个输出。

    • Verilog 实现 :最常用的是三目运算符 assign out = sel ? a : b;

    • 期末考点:在 CPU 里,MUX 随处可见。比如:ALU 的第二个操作数是来自寄存器还是立即数?这就需要一个 MUX。

2. 编码器 (Encoder) ※※※

编码器是期末考的高频考点,PPT 中提到了两种核心编码逻辑,你必须能说出它们的区别。

(1) 普通编码 (Logic Encoding)

  • 特点 :假设输入中只有一个信号有效(独热码)。

  • 逻辑:如果有多个输入同时为 1,电路会出错或输出无意义。

(2) 优先编码 (Priority Encoding)

  • 原理 :当多个输入同时有效时,只对优先级最高的那一个进行编码。

  • 实验应用:在异常处理或中断嵌套时,如果有多个中断同时到达,CPU 会根据优先编码器先处理等级最高的。

3. 补码表示法与 ALU 运算

这是综合大题计算题的常客。

(1) 为什么用补码?

  • 计算机为了让"减法"变成"加法",引入了补码。

  • 公式[A - B]补 = [A]补 + [-B]补

  • 求补码秘籍 :正数不变;负数取反加 1(符号位不变这种说法在纯位运算里不严谨,统一记作全部位取反后末位加1)。

(2) ALU 中的加减法实现

PPT 中给出了一个经典设计:

  • 减法转加法A - B 实际上是执行 A + (~B + 1)

  • Verilog 代码精髓

    复制代码
    assign b_input = (op_sub) ? ~b : b;  // 如果是减法,把 B 取反
    assign cin     = (op_sub) ? 1'b1 : 1'b0; // 如果是减法,进位输入加 1
    assign {cout, result} = a + b_input + cin;
  • 溢出判断:A 和 B 符号相同,但结果符号不同,则溢出。

4. Verilog 核心语法补充(实验必修)

  • 阻塞赋值 (=):组合逻辑使用,像 C 语言一样顺序执行。

  • 非阻塞赋值 (<=):时序逻辑(D 触发器)使用,边沿触发,并行更新。

  • 归约运算符&a(所有位相与)、|a(所有位相或)。在译码电路里判断"是否有任何一个指令有效"时非常有用。

5. 期末冲刺模拟题(本章强化版)

一、 选择题

  1. 下列哪个 Verilog 运算符表示"按位异或"?

    • A. &

    • B. |

    • C. ^

    • D. ~

    • 答案:C

  2. 在 8 位补码运算中,已知 [A]补 = 1111_1110,则 A 的真值是?

    • A. -1

    • B. -2

    • C. 254

    • D. -126

    • 答案:B(解析:取反加1得0000_0010,即2,带上负号)

  3. 优先编码器的主要作用是?

    • A. 节省电路面积

    • B. 解决多个请求同时到达时的冲突

    • C. 将二进制转为十进制

    • D. 提高运算速度

    • 答案:B

二、 判断题

  1. 在 Verilog 中,assign 语句描述的是时序逻辑。( ) ------ (是组合逻辑)

  2. 补码减法 A - B 可以通过 A + (~B + 1) 来实现。( ) ------

  3. 多路选择器(MUX)的本质是一个"多对一"的数据开关。( ) ------

  4. 归约操作符 |instr_bus 如果结果为 1,表示 instr_bus 中至少有一位是 1。( ) ------

三、 代码填空(模拟实验题)

题目:完善 ALU 中的加减法逻辑控制信号。

复制代码
// 假设 op_add 为加法使能,op_sub 为减法使能
wire [31:0] adder_a;
wire [31:0] adder_b;
wire        adder_cin;
wire [31:0] adder_result;

assign adder_a   = src1;
assign adder_b   = (op_sub) ? ( ① ) : src2; // 填空 ①
assign adder_cin = ( ② ) ? 1'b1 : 1'b0;     // 填空 ②
assign adder_result = adder_a + adder_b + adder_cin;
  • 答案:~src2op_sub

第二章的难点在于逻辑的灵活运用 。你要理解为什么 st 指令的译码需要用到逻辑门组合,为什么 ALU 结果输出要用一长串的 |(归约/选择逻辑)。

第三章:单周期 CPU 设计 ------ 手撕代码实战

老师敲黑板: "单周期"意味着一条指令在一个时钟周期内必须跑完。期末考试的代码填空题几乎全出自这里。我们要重点复习:指令译码逻辑控制信号生成 以及指令间的异同点

1. 核心指令译码(代码题必考)

在单周期 CPU 中,我们首先要根据指令的机器码(Opcode)判断它是哪条指令。

复制代码
// PPT 重点:译码逻辑 (基于 LoongArch 架构)
assign inst_add_w  = op_31_26_d[6'h00] & op_25_22_d[4'h0] & op_21_20_d[2'h1] & op_19_15_d[5'h00];
assign inst_addi_w = op_31_26_d[6'h00] & op_25_22_d[4'ha];
assign inst_ld_w   = op_31_26_d[6'h0a] & op_25_22_d[4'h2];
assign inst_st_w   = op_31_26_d[6'h0a] & op_25_22_d[4'h6]; // 注意 st 和 ld 的次操作码区别
assign inst_bne    = op_31_26_d[6'h17];

考点: 考试可能会空出 inst_st_w 的后缀 6'h0a4'h6。记住:ld.wst.w 的主操作码相同,但次操作码不同

2. 控制信号的秘密(10分大题关键)⭐⭐⭐

这是单周期 CPU 的灵魂。你需要理解每个信号为什么这么写:

信号名称 含义 哪些指令为 1 为什么要为 1
src2_is_imm 第二操作数是否是立即数 addi.w, ld.w, st.w 因为它们都需要用到 12 位偏移量/立即数。
res_from_mem 结果是否来自内存 ld.w 只有 load 指令是从内存读数写回寄存器。
gr_we 寄存器堆写使能 add.w, addi.w, ld.w 这三条指令最后都要把结果存回寄存器。
mem_we 内存写使能 st.w 只有 store 指令需要往内存里写东西。
src_reg_is_rd 第二读寄存器是否为 rd st.w, bne st 要把 rd 的值存进内存;bne 要比较 rj 和 rd。

3. 指令对比:ld.w vs st.w (综合题常客)

共同点:

  • 都要计算地址:Address = Register[rj] + SignExtend(imm12)

  • 都要通过 ALU 算加法(计算地址)。

不同点(期末简答题/综合题):

  • 数据流向ld.w内存 -> 寄存器st.w寄存器 -> 内存

  • 寄存器写使能ld.wgr_we 为 1;st.wgr_we 为 0。

  • 内存写使能ld.wmem_we 为 0;st.wmem_we 为 1。

4. 指令对比:add.w vs addi.w

  • add.w :两个操作数都来自寄存器 (rjrk)。

  • addi.w :第二个操作数来自指令中的立即数

  • 考点rf_raddr2 的选择逻辑。如果是 add.w,读寄存器地址是 rk;如果是 st.w/bne,读寄存器地址是 rd

5. 期末冲刺模拟题(本章强化版)

一、 选择题

  1. 在单周期 CPU 设计中,gr_we 信号在执行下列哪条指令时为 0?

    • A. add.w

    • B. addi.w

    • C. ld.w

    • D. st.w

    • 答案:D(解析:Store 指令写内存,不写寄存器)

  2. res_from_mem 信号主要用于控制哪个部件的输入?

    • A. ALU

    • B. 寄存器堆写回数据选择的 MUX

    • C. PC 计算器

    • D. 指令存储器

    • 答案:B

二、 判断题

  1. 单周期 CPU 的时钟周期长度由执行时间最短的指令决定。( ) ------ (是由执行时间最长的指令决定)

  2. ld.w 指令在执行阶段(EX)利用 ALU 来计算访存的有效地址。( ) ------

  3. src2_is_imm 信号为 1 时,ALU 的第二个输入端选通的是寄存器读出的数据。( ) ------ (选通的是立即数)

三、 代码填空(模拟 20 分大题)

请完善以下单周期 CPU 的控制逻辑:

复制代码
assign src2_is_imm   = ( ① ) | inst_ld_w | inst_st_w;
assign res_from_mem  = ( ② );
assign gr_we         = inst_add_w | ( ③ ) | inst_addi_w;
assign mem_we        = ( ④ );
assign src_reg_is_rd = inst_bne | inst_st_w;

// 写回寄存器的数据选择
assign rf_wdata = res_from_mem ? ( ⑤ ) : alu_result;

参考答案:inst_addi_winst_ld_winst_ld_winst_st_wdata_sram_rdata (从数据内存读出的数据)

这一章是提分的关键!请大家务必在草稿纸上画一下 ld.wst.w 的数据流图。弄清楚谁在写寄存器,谁在写内存,考试时代码填空就是送分题。

第四章:流水线 CPU ------ 速度的飞跃与冲突的烦恼

老师敲黑板: 如果单周期 CPU 是"一个人从头到尾洗完一件衣服再洗下一件",那流水线就是"洗衣、脱水、烘干、折叠、收纳"五个人分工合作。 期末重点: 流水线寄存器、数据相关(RAW)、阻塞(Stall)与前递(Forwarding)。

1. 流水线的五个阶段(复习)

流水线将指令执行切成 5 个等分,每个阶段占用一个时钟周期:

  1. IF (取指):取指令。

  2. ID (译码):解指令、读寄存器。

  3. EX (执行):算术逻辑运算。

  4. MEM (访存):读写内存。

  5. WB (写回):写回寄存器。

理想状态: 每个时钟周期都能"流出"一条完成的指令。

2. 流水线寄存器(Pipeline Registers)

为了让不同指令在不同阶段互不干扰,阶段之间必须有"墙"挡着,这就是流水线寄存器。

  • 作用:暂存上一阶段产生的控制信号和数据,并在下一个时钟上升沿传给下一阶段。

  • 命名 :通常叫 IF_ID_reg (存放 IF 给 ID 的数据), ID_EX_reg, EX_MEM_reg, MEM_WB_reg

3. ⭐⭐⭐ 数据相关 (Data Hazard)

这是本章最难、最常考的知识点,特别是 RAW (Read After Write) 相关。

(1) 什么是 RAW 相关?

前一条指令要 寄存器(比如 add.w $t1, $t2, $t3),后一条指令立刻要 这个寄存器(比如 sub.w $t4, $t1, $t5)。 由于前指令在 WB 阶段才写回,而后指令在 ID 阶段就要读,导致后指令读到了旧数据!

(2) 解决办法 A:阻塞 (Stall)

  • 原理:强制让后一条指令在 ID 阶段"等一等",直到前指令写回。

  • 代价:会产生空泡(Bubble),降低性能。

(3) 解决办法 B:数据前递 (Forwarding) ※※※

  • 原理:既然前指令在 EX 阶段已经算出了结果,没必要等它写回寄存器,直接把这个结果从 EX 或 MEM 阶段"拉一根线"传给后指令的 ALU 输入端。

  • 考点 :前递可以解决 add 后面接 add 的冲突,但无法完全解决 ld.w 后面接 add 的冲突(需要阻塞一个周期,这叫 Load-use Hazard)。

4. 可阻塞的流水线设计逻辑

在 Verilog 代码中,控制流水线流动的核心逻辑(PPT 重点):

  • allowin:本级是否允许新数据进入。

  • ready_go:本级数据是否处理完毕,准备好传给下一级。

  • to_next_valid:本级是否有有效数据要传给下一级。

公式: assign allowin = !valid || (ready_go && next_allowin);

5. 期末冲刺模拟题(本章强化版)

一、 选择题

  1. 在 5 级流水线中,解决 Load-use 冲突最有效且必要的手段是?

    • A. 增加 ALU 数量

    • B. 软件插入 nop 指令或硬件阻塞一个周期

    • C. 使用更快的内存

    • D. 增加寄存器数量

    • 答案:B(解析:Load 的结果在 MEM 阶段才出来,EX 阶段拿不到,必须等)

  2. 流水线寄存器的主要作用是?

    • A. 加快运算速度

    • B. 存储指令执行结果

    • C. 隔离不同阶段的信号,实现指令并行

    • D. 替代内存

    • 答案:C

二、 判断题

  1. 流水线由于引入了寄存器延迟,单条指令的执行时间(延时)其实变长了。( ) ------ (每级都有寄存器建立时间)

  2. 数据前递(Forwarding)可以解决所有的 RAW 冲突,无需阻塞。( ) ------ (Load-use 必须阻塞)

  3. 在流水线 CPU 中,PC 指针每个时钟周期都会更新。( ) ------ (在没有阻塞的情况下)

三、 综合题(模拟 15 分大题)

题目:分析以下代码在 5 级流水线(无前递,有阻塞)中的执行过程:

复制代码
add.w $t1, $t2, $t3  (1)
sub.w $t4, $t1, $t5  (2)

问:

  1. 指令 (2) 与指令 (1) 存在什么相关?

  2. 如果没有前递,指令 (2) 必须在 ID 阶段等待多久?

  3. 如果引入了前递技术,指令 (2) 是否还需要等待?

参考答案:

  1. 存在 RAW (Read After Write) 数据相关(关于 t1 寄存器)。

  2. 需要等待 2 个时钟周期(直到指令 1 到达 WB 阶段,指令 2 才能在 ID 阶段读到正确值,或者等指令 1 彻底写回)。

  3. 如果有前递,不需要等待。指令 1 在 EX 阶段的结果可以直接前递给指令 2 的 EX 阶段输入。

流水线的核心在于"抢时间"。考试时如果让你画流水线时空图,记得 Load 指令的结果在 MEM 之后才有效,这是最容易画错的地方!

第六章:异常与中断 ------ CPU 的"紧急避险"

老师敲黑板: 如果 CPU 是一辆高速行驶的赛车,异常就是"车子内部爆胎",中断就是"路边有人挥手拦车"。 期末考点: 异常与中断的区别、同步与异步的判定、特权等级(PLV)、以及常见的异常代号。

1. 异常 vs 中断(必考对比)

这是简答题和选择题的常客,请务必背下这张表:

特性 异常 (Exception) 中断 (Interrupt)
来源 内部信号(指令执行过程中触发) 外部信号(键盘、定时器、网卡)
同步性 同步(由当前指令引起,位置可预测) 异步(随机发生,与当前指令无关)
可屏蔽性 不可屏蔽(错了就是错了,必须处理) 可屏蔽(可以设置"别来烦我")
举例 整数除零、非法指令、地址对齐错 键盘按下、鼠标移动、定时器到期

2. 特权等级 (Privilege Level)

龙架构(LoongArch)中有两个核心等级:

  • PLV0 (内核态/核心态):权限最高。可以执行所有指令,访问所有内存,修改控制状态寄存器(CSR)。

  • PLV3 (用户态):权限受限。普通程序运行的地方。不能直接操作硬件。

考点: 当异常发生时,CPU 会自动从 PLV3 切换到 PLV0

3. 控制状态寄存器 (CSR)

CPU 专门准备了一组"小本子"来记录异常信息:

  • CSR.CRMD:当前模式寄存器(存当前特权等级、中断使能)。

  • CSR.PRMD:例外前模式寄存器(存异常发生前的特权等级,用于处理完后"穿回去")。

  • CSR.ESTAT:例外状态寄存器(存异常的类型/代号)。

  • CSR.ERA:例外返回地址(存异常发生时那条指令的地址,处理完后跳回来)。

  • CSR.EENTRY:例外入口地址(处理程序在哪里?看这个)。

4. 常见的异常代号 (Exception Code)

选择题可能会考以下代号的含义:

  • INT (0x0):外部硬件中断。

  • SYS (0x0B) :系统调用(执行 syscall 指令,用于用户态请求内核服务)。

  • ADE (0x08):地址对齐错误(比如读 4 字节数据但地址没对齐)。

  • RI (0x0D):非法指令(CPU 读到了不认识的机器码)。

5. 期末冲刺模拟题(本章强化版)

一、 选择题

  1. 下列事件中,属于"异步"事件的是?

    • A. 指令执行时发现除数为 0

    • B. 执行了未定义指令

    • C. 用户按下了键盘

    • D. 内存地址越界访问

    • 答案:C(解析:只有外部硬件触发的中断是异步的)

  2. 在异常处理过程中,记录"处理程序入口地址"的寄存器是?

    • A. CSR.ERA

    • B. CSR.EENTRY

    • C. CSR.ESTAT

    • D. CSR.PRMD

    • 答案:B

  3. 当 CPU 从异常处理程序返回时,会从哪个模式切换回哪个模式?

    • A. PLV3 -> PLV0

    • B. PLV0 -> PLV3

    • C. PLV3 -> PLV3

    • D. 不切换

    • 答案:B(解析:异常处理完是从内核态回到用户态)

二、 判断题

  1. 所有的异常都可以通过软件设置来屏蔽。( ) ------ (异常通常不可屏蔽)

  2. syscall 指令触发的是一种特殊的同步异常。( ) ------

  3. 异常发生时,CPU 会将当前的 PC 保存到 CSR.ERA 中,以便后续返回执行。( ) ------

  4. 只有在 PLV3 模式下才能访问控制状态寄存器 (CSR)。( ) ------ (只有 PLV0 才有权限)

三、 简答题(高分预测)

问:请简述 CPU 处理异常(Exception)的主要流程。 答:

  1. 识别与记录 :CPU 发现异常,在 CSR.ESTAT 记录异常代号,在 CSR.ERA 记录返回地址。

  2. 状态保存 :将当前特权等级(PLV)等信息保存到 CSR.PRMD 中。

  3. 跳转处理 :将 PLV 设置为 0,并强行跳转到 CSR.EENTRY 指向的地址开始执行处理程序。

  4. 执行程序:运行内核代码解决问题。

  5. 恢复返回 :执行 ertn 指令,根据 CSR.PRMD 恢复状态,并跳回 CSR.ERA 继续执行原程序。

这一章的关键是理解流程 。记住 CSR.ERA 存的是"回去的地址",CSR.EENTRY 存的是"处理程序的地址",考试千万别写反了!

第七章:AXI 总线 ------ 芯片内部的"高速公路"

老师敲黑板: 之前的 CPU 都是在自家院子里折腾。AXI 总线则是为了让 CPU 能跟外部的内存、外设进行标准化通信。 期末考点: 五个通道的名称与功能、双向握手协议(Valid/Ready)、读写事务的流程。

1. 为什么需要 AXI 总线?

在复杂的芯片系统中,模块之间如果乱拉线,电路会乱成一团。

  • 标准化:大家都遵守同样的协议,方便模块复用。

  • 高性能 :支持读写并行突发传输(Burst)

  • 握手机制:确保数据传输"你情我愿",防止数据丢失。

2. ⭐⭐⭐ AXI 的五个独立通道

这是本章最核心的知识点,选择题和简答题必考:

通道名称 英文名 功能描述
读地址通道 AR (Read Address) 主机告诉从机:我要读哪个地址的数据?
读数据通道 R (Read Data) 从机把数据传回给主机(包含读响应)。
写地址通道 AW (Write Address) 主机告诉从机:我要往哪个地址写数据?
写数据通道 W (Write Data) 主机把要写的数据发给从机。
写响应通道 B (Write Response) 从机告诉主机:刚才那笔数据我写成功了。

注意: 为什么写操作有 3 个通道而读只有 2 个?因为写操作需要一个**反馈(B通道)**来确认数据真的存进去了,而读操作直接看读回来的数据就知道成功没。

3. 握手协议:VALID 与 READY ※※※

AXI 的所有通道都遵循相同的双向握手逻辑:

  • VALID (有效信号):发送方(Master/Slave)说:"我把东西准备好了。"

  • READY (准备好信号):接收方说:"我有空了,可以收了。"

  • 传输发生 :当且仅当 VALID 和 READY 同时为高(上升沿)时,数据成功传输。

考点判断:

  1. VALID 信号一旦拉高,在 READY 没来之前不能拉低。(要有信用)

  2. READY 信号可以先于 VALID 拉高,也可以后拉高。

4. 读写事务时序

  • 读事务

    1. AR 通道握手(发地址)。

    2. R 通道握手(回数据)。

  • 写事务

    1. AW 通道握手(发地址)。

    2. W 通道握手(发数据)。

    3. B 通道握手(回确认信号)。

5. 期末冲刺模拟题(本章强化版)

一、 选择题

  1. AXI 总线中,负责告知主机"写操作已完成"的通道是?

    • A. AW 通道

    • B. W 通道

    • C. B 通道

    • D. R 通道

    • 答案:C

  2. 在 AXI 握手协议中,传输发生的必要条件是?

    • A. 只有 VALID 为高

    • B. 只有 READY 为高

    • C. VALID 和 READY 均为高

    • D. 时钟下降沿到来

    • 答案:C

  3. 下列关于 AXI 通道的说法,错误的是?

    • A. 读写通道是完全独立的

    • B. 每个通道都有自己的握手信号

    • C. AXI 只有 4 个通道

    • D. 支持突发传输

    • 答案:C(解析:有 5 个通道)

二、 判断题

  1. 在写事务中,写数据和写地址必须在同一个时钟周期发出。( ) ------ (它们是独立通道,可以异步发出)

  2. VALID 信号可以依赖 READY 信号来触发。( ) ------ (协议建议 VALID 不要等待 READY,防止死锁)

  3. AXI 总线支持全双工通信,即读和写可以同时进行。( ) ------

三、 简答题(综合题预测)

问:请列举 AXI 总线的五个通道,并简述一次"读事务"的完整过程。 答:

  • 五个通道:写地址通道(AW)、写数据通道(W)、写响应通道(B)、读地址通道(AR)、读数据通道(R)。

  • 读事务过程

    1. 地址阶段 :主机通过 AR 通道发送目标地址,并拉高 ARVALID;当从机拉高 ARREADY 时,地址传输完成。

    2. 数据阶段 :从机准备好数据后,通过 R 通道发送数据并拉高 RVALID;当主机拉高 RREADY 时,数据传输完成。

AXI 是大厂(如 ARM)的标准,学好这一章对你以后找芯片设计的工作非常有帮助。考试时重点盯着 VALID/READY 的握手波形图看!

相关推荐
酷酷的鱼4 小时前
跨平台技术选型方案(2026年App实战版)
react native·架构·鸿蒙系统
The Open Group6 小时前
架构驱动未来:2026年数字化转型中的TOGAF®角色
架构
鸣弦artha6 小时前
Flutter 框架跨平台鸿蒙开发——Flutter引擎层架构概览
flutter·架构·harmonyos
这儿有一堆花8 小时前
CDN 工作原理:空间换取时间的网络架构
网络·架构·php
Xの哲學10 小时前
Linux Tasklet 深度剖析: 从设计思想到底层实现
linux·网络·算法·架构·边缘计算
min18112345610 小时前
HR人力资源招聘配置流程图制作教程
大数据·网络·人工智能·架构·流程图·求职招聘
升职佳兴11 小时前
从 0 到 1:我做了一个提升 AI 对话效率的浏览器插件(架构+实现+发布)
人工智能·架构
BullSmall11 小时前
SEDA (Staged Event-Driven Architecture, 分阶段事件驱动架构
java·spring·架构
Coder_Boy_11 小时前
基于SpringAI的在线考试系统-DDD(领域驱动设计)核心概念及落地架构全总结(含事件驱动协同逻辑)
java·人工智能·spring boot·微服务·架构·事件驱动·领域驱动
sunfove12 小时前
光电共封装(CPO):突破算力互连瓶颈的关键架构
人工智能·架构