计算机系统要素:硬件描述语言HDL简介
这个系列是我近期学习The Elements of Computing Systems(中文配套书为《计算机系统要素》)的学习笔记,这是一个网络公开课程,旨在教授任何人从零开始实现计算机构建的完整流程,点击进入网站。我会在学习的过程中将碰到的一些问题和解决方法记录下来,方便其他人参考学习。
本文主要介绍其中用到的硬件描述语言(Hardware Description Language),由于网上教程较少,初次接触会很让人头疼,
1:HDL语言入门
本章的Project要求使用原始的Nand门以及由此构建的复合门实现所有逻辑门。这就涉及到HDL语言的格式问题,下面是构建Not门的实例:
CHIP Not {
IN in;
OUT out;PARTS:
Nand(a=in, b=in, out=out);
}
需要注意的几点是:
1,HDL语言所涉及的所有关键词都区分大小写,包括上面所出现的CHIP, PARTS和芯片名等等。
2,所有句子后面都需要加分号。
3,IN和OUT声明了该CHIP的输入和输出,假设要调用Not函数,那么其形式便为Not(in=, out=),通过这个例子,我们可以看到Nand函数的IN为a,b,OUT为out,因此调用它的时候,参数括号里就必须要有a, b, out三个参数。PARTS部分描述了所有底层电路和拓扑结构,也就是真正实现芯片的逻辑部分。与、或、非等简单电路的构建可以参考维基百科(词条最下面)中的逻辑式。
4,在out表达式中,“=”符号是向右赋值的,这就意味着,“out”本身是含有值的,它的值是in的值经过相应函数输出的值,“=”的作用是将out所输出的值付给用户创建的参数。这有点像C++中的cin, cout流的“>>”“<<”符号。
5,BUILTIN CHIPS在使用时,需要将相关的class文件复制到文件所在目录才可调用。所以先要在tools文件夹中找到Nand的class和hdl文件,将其复制到作业文件夹中,才可以调用。调用BUILTIN在今后几章中也非常常用。
2:DMux的实现
在第一章所有CHIPS中,个人认为最难实现的便是DMux了,它又叫做数据分配器,根据选择项sel的内容来确定输出项。
其主要思路为:
Sel和in的值同时决定了a, b能否为1,这是一个合取关系,所以可以通过Not先得到一个sel的相反数,再利用And门分别求得a和b。
代码如下:
CHIP DMux {
IN in, sel;
OUT a, b;PARTS:
Not(in=sel,out=nots);
And(a=in,b=nots,out=a);
And(a=in,b=sel,out=b);
}
计算机系统要素:硬件描述语言HDL简介相关推荐
- FPGA和硬件描述语言HDL(如Verilog)简介
文章目录 前言 1.FPGA是什么? 1.1 FPGA的定义(容易理解) 2.硬件描述语言(HDL) 3.FPGA的应用前景 4.FPGA的学习网站 5.FPGA需要面向对象编程吗? 小结 前言 创作 ...
- 硬件描述语言HDL和汇编语言、c语言的区别
个人感觉: 硬件描述语言(vhdl等):是为了制造cpu(类似的芯片).设计人员使用硬件描述语言设计和安排寄存器和时序电路的组合,类似搭积木,然后生成门级网表(门电路),然后通过相关软件等,生成最终物 ...
- (一)硬件描述语言verilog
问题总结区 1.如何理解 module ..... endmodule ? module 指模块是verilog 的一个基本单元,这个基本单元可以是描述一个简单的求和行为,也可以用来表达一个功能器件( ...
- Verilog硬件描述语言
硬件描述语言HDL是具有特殊结构能够对硬件逻辑电路的功能进行描述的一种高级编程语言,这种特殊结构能够: 描述电路的连接 描述电路的功能 在不同抽象级上描述电路 描述电路的时序 表达具有并行性 HDL主 ...
- EDA硬件描述语言VHDL概述
1.EDA技术概述 以大规模可编程逻辑器件为设计载体,以硬件描述语言HDL为系统逻辑描述的主要表达方式,以计算机.大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,自动地完成用软件方式描述的电子 ...
- EDA硬件描述语言VHDL(一)
文章目录 1.EDA 2.EDA技术应用对象 3.开发流程 4.常用的描述PLD内部结构的专用电路符号 5.宏单元 6.扩展乘积项 7.I/O控制块 8.CycloneⅢ系列器件的结构原理 1.EDA ...
- 例说Verilog HDL和VHDL区别,助你选择适合自己的硬件描述语言
如果你搜索Verilog和VHDL的区别,你会看到很多讨论这场HDL语言战争的区别页面,但大多数都很简短,没有很好地举例说明,不方便初学者或学生理解. Verilog和VHDL之间的区别将在本文中通过 ...
- 硬件描述语言VHDL
数字系统设计分为硬件设计和软件设计, 但是随着计算机技术.超大规模集成电路(CPLD.FPGA)的发展和硬件描述语言(HDL, Hardware Description Language)的出现, ...
- 第三章 硬件描述语言verilog(一)
文章目录 第三章 硬件描述语言verilog 第1节 Verilog语言的历史 第2节 综合和仿真 2.1 综合 2.2 仿真 2.3 可综合设计 第3节 模块结构 3.1 模块介绍 3.2 模块名和 ...
最新文章
- python凹多边形分割_使用Opencv python从Image中裁剪凹面多边形
- 智能车竞赛华南赛区湖北文理学院赛点
- 2!=5 or 0在python中是否正确-python中的if判断语句
- 打字机已经被计算机所取代用英语,无法被电脑所取代的职业
- 组策略配置客户端计算机使用WSUS服务器进行更新
- Redis使用过程出现类型转换异常问题- 20190220
- 摄影测量--内外方位元素
- asyncio 文件io高并发_用 asyncio 封装文件读写
- 基础练习: 使用openssl命令创建RSA密钥
- 腾讯看点基于 Flink 构建万亿数据量下的实时数仓及实时查询系统
- android stagefright
- 公司订餐系统Java
- 【unity学习笔记-如何给动态的人物添加碰撞体】
- Linux系统调用列表
- Event-B建模(六)——控制桥上汽车,精化
- 女博士年薪156万入职华为:给员工吃饱了,他们才会为你拼命
- 2018年天源迪亚杯博弈赛后的感受
- Advanced IP Scanner –免费的轻量级Windows端口扫描器
- 了解驾驶行为的重要性、让公路运输更安全( 上 )
- python和c 的区别-Python和C语言的区别是什么?Python和C语言的简单比较
热门文章
- 【Python/工具】Pycharm中如何查看一个函数需要哪些参数
- [JSOI] 快递服务 [SHOI] 书柜的尺寸 优化dp
- 系统服务器性能巡检报告,pc服务器巡检报告
- 龙族幻想服务器维护多长时间,【龙族幻想】12月31日维护公告
- python采用强制缩进的方式使得代码具有极佳的_Python基础
- 组合类和友员类的差异有哪些(C++)
- 关于svchost占用巨大内存的问题
- 微信小程序:各种Tab栏
- 电脑很小,电脑声音太小了加满了就是很小声怎么办
- python 购物车分析_Python购物车