表达式求值(随心所欲版) 一、构建 tokens所有的代码基本上都在 sdb.c中实现,没有轮子自己造。 构建 tokens 这步,基本上就是实现一个简单的词法分析器,从 args[0]开始,一个一个模式进行识别。比如对于表达式: 0x80100000+ ($a0 +5)*4 - ( $ t1 + 8) + 32 首先就要能识别出 0x开头的 16进制数、$开头的寄存器,识别出来以后,我们首先就是把这些能计算的 2024-07-22 ysyx #ysyx #PA1 #sbd
数字电路实验7 一、状态机 状态名 y3 y2 y1 y0 A 0 0 0 0 B 0 0 0 1 C 0 0 1 0 D 0 0 1 1 E 0 1 0 0 F 0 1 0 1 G 0 1 1 0 H 0 1 1 1 I 1 0 0 0 这是一个状态编码,建立一个Verilog文件,用SW0作为FSM低电平有效同步复位端,用SW1作为输入w,用KEY0作为手动的 2024-07-19 ysyx > 数字电路实验 #ysyx #NVBoard #状态机 #ps/2接口 #键盘
数字电路实验6 一、移位器 控制位 工作方式 000 清零 001 置数 010 逻辑右移 011 逻辑左移 100 算数右移 101 左端串行输入1位值,并行输出8位值 110 循环右移 111 循环左移 以下是一个移位寄存器的实现: 123456789101112131415161718192021222324252627282930module move(ctl 2024-07-18 ysyx > 数字电路实验 #ysyx #NVBoard #寄存器 #移位器
数字电路实验3 设计 ALU在CPU中,ALU的功能除了加减法运算之外,往往还包含逻辑运算、移位、乘除法、比较大小等等。我们这里按照RISC-V中基础指令集RV32I的ALU的设计要求来进行介绍。 RISC-V基础指令集RV32I只支持32位整型数值的操作。操作数可以是带符号补码整数或无符号数。ALU不需要完成乘除法,不需要进行溢出判断,相关操作由软件来完成。RV32I的ALU需要完成以下操作: 加减法操作 2024-07-16 ysyx > 数字电路实验 #ysyx #NVBoard #加法器 #ALU
数字电路实验-带有减法功能的加法器 一、加法器一位加法器就是异或作为结果,与作为进位标志,因此可以很简单的设计出一位加法器: 如果将四个一位加法器连起来,那么就成 4位了串行进位加法器电路: 需要注意的是,上面的加法器是基础构建,它只执行加法功能,其它任何溢出、进位等等都是高层的概念,和加法器没有任何关系。 二、加法器执行加法计算在数据类型一致的情况下,比如,长度统一。这时候就可以由加法器计算它们之间的加法运算,但是数据类型 2024-07-15 ysyx > 数字电路实验 #ysyx #NVBoard #加法器
数字电路实验2 一、译码器译码器带有一个使能输入,以及 n 位输入端,一共能输出 2^n 次方种信号。在二进制码中,最常用的输出编码是位中取1位编码,即任何时刻,m 位输出编码中只能有1位有效,其余各位都为0,这样的二进制编码被称为独热编码(one-hot encoded),意思是那个被置为1的码看起来是“热”的,而二进制译码器输出的信号就是独热编码。也可以理解为,这些信号之间是正交的,某一个信号不能通过其它 2024-07-14 ysyx > 数字电路实验 #ysyx #NVBoard #译码器 #编码器
数字电路实验1 实验过程本实验采用行为建模,top.v 代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788modul 2024-07-13 ysyx > 数字电路实验 #ysyx #NVBoard #二位四选一选择器
搭建verilator仿真环境(完结) 一、前言上一篇文章中的最后提到了应该写一个脚本来一键执行从转换、编译到运行的所有步骤,这正是这一篇文章的一个主题。 二、波形图在安装了 gtkwave 之后,就可以利用–trace 参数来在运行的过程中,生成 wave.vcd,然后通过 gtkwave 查看: 1gtkwave wave.vcd 如下图所示: 三、自动化事实上,是要将很多命令放在一起,顺序执行就好了: 12345678910 2024-07-13 ysyx #ysyx #verilator #NVBoard
搭建verilator仿真环境(双控开关) 一、Verilator什么是 VerilatorVerilator 是一个开源的 Verilog HDL(硬件描述语言)仿真和转换工具,它将 Verilog 代码转换为高性能的 C++ 或 SystemC 代码。Verilator 主要用于对 RTL(寄存器传输级)设计进行仿真,尤其擅长处理大型的复杂数字电路。以下是 Verilator 的一些关键特性和用途: 特性 高性能: Verilat 2024-07-12 ysyx #ysyx #verilator #双控开关
利用 Hexo 搭建个人博客 〇、前言本文将会讨论,如何将 CSDN 上的博客,拉取到本地,然后PicGo、Hexo、Github 等工具建立个人博客,环境为 Ubuntu 20.04。 一、利用 Hexo预备工作首先安装 Node.js、npm、git工具。 123456> node -vv12.22.9> npm -v8.5.1> git versiongit version 2.34.1 安装 H 2024-07-06 博客 #Hexo