2025年10月7日
摘要: 输入输出是计算机与外界交互的基本手段,只需要向设备发送一些有意义的数字信号,设备就会按照这些信号来工作。设备有自己的专属寄存器(如CPU的通用寄存器),也有自己的功能部件(如CPU的ALU)。以键盘外设为例,键盘有一个把按键的模拟信号转换成扫描码的部件,然后CPU根据扫描码就知道真实世界的用户按下了 阅读全文
posted @ 2025-10-07 16:02 yuweijie0124 阅读(204) 评论(0) 推荐(1)
  2025年9月29日
摘要: 目前我们已经跑通了cpu-test和实现了riscv-I型指令所需的42条指令,现在我们已经可以到跑简单程序的地步了,我们也希望运行简单的程序,因此我们需要运行时环境(runtime environment)。 比如现在要结束程序,那我们就要用提前准备好的API如void halt,调用这个halt 阅读全文
posted @ 2025-09-29 13:57 yuweijie0124 阅读(207) 评论(0) 推荐(0)
  2025年9月13日
摘要: 前面的内容后面再补,因为近期要C考核了,所以先准备下C考核所需的内容。 RTFSC(2) 整理一条指令在NEMU中的执行结果 从函数中跳转,宏嵌套中慢慢进入最终的代码,人肉gdb一下, 比如在sdb中执行一次si,那么根据cmd_si代码那我们会跳转到cpu_exec()中 static int c 阅读全文
posted @ 2025-09-13 17:03 yuweijie0124 阅读(216) 评论(0) 推荐(1)
  2025年9月6日
摘要: 学一生一心的时候我出现了这样的疑问,我试着给出回答。 程序是如何运行的 处理器是如何设计的 RTL代码是如何变成可流片版图的 这三个问题分别对应了计算机系统的三个不同抽象层次:软件层、硬件架构层和物理实现层。 1. 程序是如何运行的 以C语言为例子,你写完一个.c文件后。 编译与链接:经过编译之后成 阅读全文
posted @ 2025-09-06 05:17 yuweijie0124 阅读(416) 评论(0) 推荐(2)
  2025年9月4日
摘要: PA0是配环境和获取源码,教你如何使用一些简单的linux命令和工具,也非常重要,但是本文不赘述。 拿到一个工程首先就是要读源码,比如从main函数一步一步看工程到底在干什么事情。(nemu不是从main开始的,但是不知道这个不耽误你理解nemu,这个在pa3.1有涉及) 那我这里顺便带着大伙读一读 阅读全文
posted @ 2025-09-04 10:55 yuweijie0124 阅读(87) 评论(0) 推荐(0)
  2025年9月3日
摘要: 写Verilog最重要的是心中要有电路图(这个是官方说法),我觉得也可以理解为你要能知道你自己写出来的Verilog代码能够综合出什么东西来。 以下部分是必做题: 实验一 选择器 实验二 译码器和编码器 实验三 加法器与ALU 实验六 移位寄存器及桶形移位器 实验七 状态机及键盘输入 前面三个都很简 阅读全文
posted @ 2025-09-03 14:40 yuweijie0124 阅读(122) 评论(0) 推荐(0)
摘要: 本博客用于记录我在一生一芯学习中所在手册中使用的比较有用的tips,可以方便后人学习,后续可能会根据新找的慢慢更新。 我全部都看一遍并且翻译出比较有用且常用的内容列出来,方便大伙使用和学习。 1.Verilating With the --binary option, Verilator will 阅读全文
posted @ 2025-09-03 13:41 yuweijie0124 阅读(93) 评论(0) 推荐(0)
  2025年9月2日
摘要: 简要记录下我做一生一芯遇到的困难和思考。 阅读全文
posted @ 2025-09-02 17:04 yuweijie0124 阅读(362) 评论(0) 推荐(2)