【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论
从左到右,从上到下
先搞定缓冲/非门,再写与/或门
1. 实例解读
先以四选一数据选择器进行说明
对于数字逻辑的部分不再说明,直接进行逻辑电路图到Verilog门级建模的人工翻译过程的描述。
1.1 端口和线网分析
- 确定输入/输出端口
- 输入端口
- 数据端:i0,i1,i2,i3
- 控制端:s1,s0(小端序写法,高字节在高位)
- 输出端口:
- 数据端:out
- 输入端口
- 确定子模块内部线网
- 非门类:s1n,s0n
- 与门类:y0,y1,y2,y3
至此,可以翻译的部分为:
module mux4_to_1 ( // 四选一数据选择器模块input i0,i1,i2,i3,input s1,s0,output out);// 设置内部线网wire s1n,s0n;wire y0,y1,y2,y3;<其他>
endmodule
【疑问】为什么内部线网用wire而不用寄存器reg?
继续从端口连接规则——污水处理模型来谈及,我们
- 把wire比作无阀门水管
- 把reg比作双阀门水管
- 把设计块的设计过程,比作水管与其他器件的连接过程(此时是没有通水的)
- 把激励块的设计过程,比作管道通水,以测试连接的正确性
1.2 器件分析
器件分析的顺序:
对于左边输入,右边输出的逻辑电路图来说:
- 缓冲门/非门单独拎出来
- 从左到右
- 从上到下
因此,有如下器件翻译顺序:
- 非门2个
- 与门4个
- 或门1个
给出如下代码片(非完整代码)
// 连接门电路
not (s1n,s1);
not (s0n,s0);// 【特别注意】以下部分的s1,s0的写法是有规律的,背着写就可以
and (y0,i0,s1n,s0n); // 0,0
and (y1,i1,s1n,s0); // 0,1
and (y2,i2,s1,s0n); // 1,0
and (y3,i3,s1,s0); // 1,1or (out,y0,y1,y2,y3);
1.3 完善的设计块
module mux4_to_1( // 1位 四选一数据选择器input i0,i1,i2,i3,input s0,s1,output out);// 声明内部线网wire s0n,s1n;wire y0,y1,y2,y3;// 门级建模not (s0n,s0);not (s1n,s1);and (y0,i0,s1n,s0n);and (y1,i1,s1n,s0);and (y2,i2,s1,s0n);and (y3,i3,s1,s0);or (out,y0,y1,y2,y3);endmodule
2. 总结:门级建模的翻译方法
对于设计好的逻辑电路图来说,有这样的方法进行翻译,这种方法会让你翻译出来的门级描述逻辑清晰严谨
2.1 前提条件
- 逻辑电路图的设计,是数字逻辑课程的内容,这里不讲
- 逻辑电路图需要是优化的,也就是应用层级建模方法设计出来的,而不是很乱的一堆电路图。
- 例如:设计一个四位全加器,需要首先设计出来一个一位全加器,在这里,一位全加器的逻辑电路图和四位全加器的逻辑电路图是两张图,并且四位全加器直接应用一位全加器的实例
2.2 具体方法
对于某一个子模块的设计来说:
- 先确定端口
- 再确定内部线网
- 再确定需要的逻辑门
- 先缓冲门/非门,再与/或门
- 从左到右,从上到下(左边输入,右边输出)
【Verilog HDL】从逻辑电路图到门级建模——人工翻译的方法论相关推荐
- 三、6【Verilog HDL】基础知识之门级建模
参考书籍:<Verilog HDL 数字设计与综合>第二版,本文档为第5章的学习笔记.由于本章也讲述的建模方式.该建模方式是通常设计师常用的底层抽象层次.更为低层的为开关级建模. 想了解更 ...
- 在Verilog语言中,使用门级建模设计一个由1位全加器组成的4位全加器
4位全加器的门级建模 Verilog语言的层级 在Verilog硬件描述语言中,我们可以分许多层次对电路进行描述,每一层都有自己的特点.层次分为开关级.门级.数据流级.行为级.我们不能说必须使用哪一种 ...
- (05)Verilog HDL时序逻辑:always
(05)Verilog HDL时序逻辑:always 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL时序逻辑:always 5)结语 1.2 FP ...
- 数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(一)
文章目录 1.Verilog语言的设计思想和可综合特性 2. 组合电路的设计 2.1 数字加法器 2.2 数据比较器 2.3 数据选择器 2.4 数字编码器 2.4.1 3位二进制8线-3线编码器 2 ...
- 20计算机数电实验四--编译器的门级建模
一 实验过程 第一步:打开Quartus II新建一个工程文件路径如图(新建一个与项目名称相同的文件) 第二步:点击file 新建,对话框中选择 Verilog HDL File 第三步:输入代码 m ...
- 主从D触发器的门级建模
1.实验代码: module MSDFF (Q,Qbar,D, C); output Q, Qbar; input D, C; wireNotc,NotD,NotY,Y,D1,D2,Ybar,Y1,Y ...
- 爆肝4万字❤️零基础掌握Verilog HDL
文章目录 0.前言 1.Verilog HDL简介 1.1 什么是Verilog HDL 1.2 verilog发展历史ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 1.3 为什么要使用verilog ...
- Verilog HDL三种描述方式
一.数据流建模方式 在组合逻辑电路中,数据不会存储,因此输入信号经过电路变为输出信号类似于数据流动.可以通过连续赋值语句这种特性进行建模,这种建模方式通常被称为数据流建模. 连续赋值语句只能用来对连线 ...
- ZYNQ之FPGA学习----Verilog HDL语法(2)
5 Verilog 高级知识点(二) 5.1 Verilog 语句块 Verilog 语句块提供了将两条或更多条语句组成语法结构上相当于一条一句的机制.主要包括两种类型:顺序块和并行块. 顺序块 顺序 ...
最新文章
- 02-CA/TA编程:aes demo
- python中的reduce() 函数
- 9行代码AC——1011 A+B 和 C (15分)
- 原来女孩子做电子工程师也很厉害。。
- JAVA校内报纸实验_实验(实训)中心2011—2012学年第二学期工作计划
- 关于 LDTP 操纵 windows 控件。
- RK3399 Mali-T860占用率
- 【转】关于23种设计模式的有趣见解
- SD和SDHC和SDXC卡的区别是什么
- 无线路由dns服务器地址,tplink无线路由器怎么设置DNS服务器地址
- Linu查看文件占用率命令
- 2、进入缓冲区(缓存)的世界,破解一切与输入输出有关的疑难杂症(转载自C语言中文网,仅作学习笔记)
- 拳皇觉醒服务器维护,拳魂觉醒活动什么时候开 服务器开区活动时间顺序
- TCP/IP协议是什么计算机网络基础理论
- 1和4互素吗_互素是什么意思?1~10中与10互素的数有多少个
- jmeter如何进行一个简单的测试(超级详细,有图有文字,闭着眼都能成功)
- c语言程序设计中国传媒大学,中国传媒大学82《程序设计》考试大纲.doc
- Android 使用加速度计
- Java字母笔顺_j的笔顺 j书写顺序是什么
- MySQL三大日志——binlog、redoLog、undoLog详解
热门文章
- asp.net 分布式应用开发
- Visual Studio Team System 2008 Team Suite 简体中文正式版
- virtualbox怎么共享文件夹 linux,Virtualbox中Ubuntu设置共享文件夹
- 判断按键值_「正点原子NANO STM32开发板资料连载」第十六章电容触摸按键实验...
- Mysql函数访问oracle,Oracle与MySql函数
- linux夏令时配置文件,Linux夏令时是怎么调整的?
- 7-15 计算圆周率 (15 分)
- Win32ASM学习[17]:条件跳转
- Opencv实战【3】——图像修复与图像锐化(darling in the franxx)
- C语言 链表拼接 PTA,PTA实验 链表拼接 (20point(s))