自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jiazh的博客

技术杂谈

  • 博客(20)
  • 收藏
  • 关注

原创 学习verilator(号称最快的verilog simulator)

verilator: 号称最快的verilog simulator. 最快, 还开源, 还可以用C++写sim代码, 那么就可以使用各种C++的调试手段了.它的原理是把verilog翻译成C++, 可以看做是verilog设计出来的硬电路的等价的"纯软件模拟器".

2025-01-25 17:43:29 424

原创 学习yosys(一款开源综合器)

学习使用一款开源综合器-yosys

2025-01-25 11:01:06 820

原创 verilog笔记1

verilog学习笔记

2025-01-19 23:00:47 645

原创 自己动手写CPU - 6

自己动手写CPU。CPU可以工作了,但是写机器码太麻烦了,这一节做一个汇编器,可以方便地把汇编指令翻译成二进制机器码。

2025-01-11 23:25:23 509

原创 自己动手写CPU - 5

自己动手写CPU系列, 从0开始写了一个最简化的CPU, 并且烧录到小SiPeed Tang Nano开发板(高云 小蜜蜂系列FPGA)上试运行了一下. 验证结果是正确的. 验证成功后还可以加入一些新的指令.

2025-01-11 15:46:02 2230

原创 自己动手写CPU - 4

上一节中有一个问题未解决: 没有条件跳转, 需要利用CMP的结果来控制跳转, 例如: 比较循环次数到了10了没? 小于10则继续循环. 这一节补上它.

2025-01-06 11:22:45 1613

原创 自己动手写CPU - 3

这样ALU基本都完成了. 将R7连接至一个8位地址/16位数据的ROM, 将里面存储的数据一行一行读出来, 就可以执行代码了.可见, RTL中增加了一个加法器实现加1, 增加了一个2选1, 由sel[7]选它是输出out1, 或者是R7+1.哦, 对了, 一开始准备用R7当PC指针使用的, 这样如果使用指令修改了R7的值, 即实现了跳转.如果当前指令不修改R7的值, R7也需要自加1的, 即顺序执行.这个要怎么实现. 只增加几行代码. 修改如下。自己动手写CPU - 2-优快云博客。

2025-01-04 21:02:39 406

原创 自己动手写CPU - 2

目标寄存器, 这里还没有体现, 因为目前代码全部是组合逻辑. 存入目标寄存器是根据op[10:8]将out1存入相应寄存器, 还需要有clk信号.3-8译码器代码很简单, 也放上来, 它做为alu的子模块.自己动手写CPU - 1-优快云博客。代码怎么实现呢. 也是很简单的, 如下。下面放上全代码, 和全RTL图.

2025-01-04 21:01:17 190

原创 自己动手写CPU - 1

电脑, 手机, 单片机, 都有一个核心部件: CPU.今天开始学verilog, 就尝试一下动手写一个可以工作的CPU.

2025-01-04 17:55:39 561

原创 华为机试:仿 LISP 运算 - Python实现之篇3

lambda关键字后面是pars参数表, body函数体, env刚才打包的变量捕获. 这里pars/body/env都不是一个简单的值, 可能是一组值.完成这些工作, 先code=‘(+ 2 3)’, 再run(code). 便 可以执行代码, 并输出结果了.最后面的__main__函数, 则是写了一个主循环, 不停在从命令行接收用户输入的lisp语句, 并执行.以上功能, 仅仅实现了一个计算器的功能. 离变成编程语言还差了: 函数定义和调用. 那么,有了命令行输入的处理, 这便更像一个解释器了.

2024-12-25 23:01:19 417

原创 华为机试:仿 LISP 运算 - Python实现之篇2

上一节实现了语法树的解析, 将表示式的字符串解析成Python里面list的形式.lisp_interpreter_pytest.py 内容如下。在上一节的基础上, 加入执行运算, 就可返回求值.lisp_interpreter.py 内容如下。运行如下, 测试PASS, 所以执行是正确的.

2024-12-24 22:45:02 207

原创 华为机试:仿 LISP 运算 - Python实现之篇1

今天也做一个Python版本的. 后面可能会逐步把它实现成一个Lisp解释器.华为机试:仿 LISP 运算_仿lisp运算华为机试-优快云博客。看到这一篇博文, 感觉这个题目挺有意思的.欢迎对Lisp感兴趣的同学一起讨论.测试运行PASS, 解析正确.同时也写了一个测试代码.

2024-12-24 22:17:49 357

原创 定制最小linux系统 - 4: 使用vscode单步调试

内核毕竟是一个很大的工程, 有时看得一头雾水, 如果能单步调试的话, 对于理解可能有亿点帮助.下面一步步搭建 qemu+vscode环境对内核进行单步调试.

2024-12-22 16:36:57 1445

原创 定制最小linux系统 - 3: 使用qemu启动系统

系统启动时会停留在: Please press Enter to activate this console. 按回车进入命令行.系统已经启动成功, 可以试试常用命令.2秒启动完, 按回车进入命令行。

2024-12-22 16:35:58 269

原创 定制最小linux系统 - 2: 编译busybox

Busybox是Linux界的瑞士军刀, 只有1-2M, 包含了大部分Linux常用命令., 位于: ~/code/busybox-1.36.1/rootfs.cpio。嵌入式Linux/Android一般都使用。到这里, 编译busybox并生成了最小。init文件写入以下内容。构建最小的运行环境.

2024-12-22 16:35:19 218

原创 定制最小linux系统 - 1: 编译 linux 内核

编译完成, 即可以看到生成了内核, 路径: arch/x86_64/boot/bzImage.下面完成定制一个可启动的最小的linux系统, 包括。原则: 最少的操作, 尽量使用默认配置., 然后用qemu启动它.后面的篇节会制作一个最小。

2024-12-22 16:34:41 295

原创 linux驱动 - 4: simple char device字符驱动2

在上一节的基础上, 加入处理函数.既然导出了文件节点, 用户程序就可以对这个文件节点进行open()/write()/read()/close()等操作, 用户操作时内核就会调用这里写的对应的函数.

2024-12-22 16:33:43 469

原创 linux驱动 - 3: simple char device字符驱动

上一节的驱动, 确实可以加载, 但其实没有什么功能.驱动的作用 一般是 "硬件程序" 之间的桥梁, linux中"一切皆文件"的思想, 所以驱动会暴露一个文件节点给用户态程序控制硬件, 或者与其交换数据.用户态程序通过标准文件接口open()/write()/read()/close()进行操作.

2024-12-22 16:32:31 186

原创 linux驱动 - 2: helloworld.ko

上一节, 搭建好了开发环境.那就小试牛刀, 编写一个最简单的ko, 从内核发出一句问候: hello-world.

2024-12-21 01:52:31 265

原创 linux驱动 - 1: 准备工作

只用一个虚拟机linux系统, 即是开发机, 也是测试机.只用一个工具vscode, 即是ssh命令行, 也是文件管理/编辑/编译/测试. 还是git客户端!只需要安装2个包: openssh-server, build-essential到这里, 可以进入下一步: 小试牛刀, 编译一个helloworld.ko, 见下一节.

2024-12-21 01:40:12 348 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除