数字电路-基础逻辑门实验

基础逻辑门是数字电路设计的核心元件,它们执行的是基本的逻辑运算。通过这些基本运算,可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门(AND)、或门(OR)、非门(NOT)、异或门(XOR)、与非门(NAND)和或非门(NOR)。这些逻辑门广泛应用于计算机、嵌入式系统以及各种数字电子设备中。

1、与门

1.1、符号

与门(AND gate),又称逻辑积电路。 只有当输入都为高电平(逻辑1)时,输出才为高电平(逻辑1),否则输出为低电平(逻辑0),与门逻辑符号(矩形国标符号与形状特征符号)如下所示。

1.2、与门真值表

输入 A输入 B输出 X(A & B)
000
010
100
111

1.3、与门波形图

本质其实就是都是1就是1。

我们为什么在写 FPGA 时要先进行仿真,主要原因如下:

验证设计正确性:仿真可以在硬件实现之前验证逻辑设计的正确性。通过模拟输入信号并观察输出,设计者可以确保设计按照预期工作,及时发现并纠正逻辑错误。

减少硬件调试时间:在实际硬件上测试发现问题,调试往往非常耗时且复杂。通过在仿真环境中提前发现问题,可以大幅减少在FPGA硬件上的调试时间和成本。

功能验证:设计过程中,仿真可以用于验证各个功能模块的交互和整体系统的功能。确保模块之间的数据传输和控制信号的正确性。

  提供的仿真例程文件都在对应工程的 sim 文件夹里面,如果想跟着一起写的话,先创建一个工程,工程里面包含 doc 、 rtl 、 sim 。

  仿真文件 logical_and_mod.v 例程如下所示:

`timescale 1ns / 1ns  // 定义时间单位为1纳秒,时间精度也为1纳秒

module logical_and_mod();  // 模块定义,名称为logical_and_mod

//reg define
reg A;  // 定义A,作为输入信号
reg B;  // 定义B,作为输入信号

//wire define
wire X;  // 定义逻辑与运算的输出

// 初始化信号
initial begin
    A = 1'b0;  // 将寄存器A初始化为0
    B = 1'b0;  // 将寄存器B初始化为0
    #200;      // 等待200纳秒

    A = 1'b0;  // 设置A为0
    B = 1'b1;  // 设置B为1
    #200;      // 等待200纳秒

    A = 1'b1;  // 设置A为1
    B = 1'b0;  // 设置B为0
    #200;      // 等待200纳秒

    A = 1'b1;  // 设置A为1
    B = 1'b1;  // 设置B为1
    #200;      // 等待200纳秒
end

// 例化
logical_and u_logical_and(
    .A(A),      // 输入A
    .B(B),      // 输入B
    .X(X)       // 输出X,存储逻辑与运算结果
);

endmodule  // 模块结束

initial begin 表示 初始化过程,在仿真开始时执行。

initial 块内,给 AB 分别赋值,并使用 #200 来表示等待 200 纳秒。

1'b0 表示 1 位的二进制值 0

1'b1 表示 1 位的二进制值 1

总共进行 4 次信号的变化,每次设置不同的值,然后等待 200 纳秒。

第一次: A = 0, B = 0

第二次: A = 0, B = 1

第三次: A = 1, B = 0

第四次: A = 1, B = 1

module logical_and(
	input A,      //输入 A
	input B,      //输入 B

	output X      //输出 X

);

assign X = A & B;  //将输入 A & B 的结果直接赋值给 输出 X

endmodule

module logical_and(...):这是一个名为 logical_and 的 Verilog 模块定义。这个模块实现了逻辑与(AND)运算。

input A:定义了输入端口 A,它是一个 1 位二进制输入信号。

input B:定义了输入端口 B,它也是一个 1 位二进制输入信号。

output X:定义了输出端口 X,它是一个 1 位二进制输出信号,用于存储逻辑与运算的结果。

assign X = A & B;:这是 Verilog 中的 连续赋值语句,表示将 AB 进行 按位与(AND) 运算的结果直接赋值给输出端口 X

A & B:对输入信号 AB 进行 按位与(AND) 运算,运算规则如下:

0 AND 0 = 0

0 AND 1 = 0

1 AND 0 = 0

1 AND 1 = 1

结果 X 只会在 AB 都为 1 时为 1,否则为 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969836.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常见的IP地址分配方式有几种:深入剖析与适用场景‌

在数字互联的世界里,IP地址如同网络世界的“门牌号”,是设备间通信的基础。随着网络技术的飞速发展,IP地址的分配方式也日趋多样化,以适应不同规模、不同需求的网络环境。本文将深入探讨当前主流的几种IP地址分配方式,…

【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设…

【现代深度学习技术】深度学习计算 | GPU

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…

蓝桥杯备考:贪心算法之纪念品分组

P1094 [NOIP 2007 普及组] 纪念品分组 - 洛谷 这道题我们的贪心策略就是每次找出最大的和最小的&#xff0c;如果他们加起来不超过我们给的值&#xff0c;就分成一组&#xff0c;如果超过了&#xff0c;就把大的单独成一组&#xff0c;小的待定 #include <iostream> #i…

【Elasticsearch】Mapping概述

以下是Elasticsearch中提到的关于Mapping的各模块概述&#xff1a; --- 1.Dynamic mapping&#xff08;动态映射&#xff09; 动态映射是指Elasticsearch在索引文档时&#xff0c;自动检测字段类型并创建字段映射的过程。当你首次索引一个文档时&#xff0c;Elasticsearch会根…

java商城解决方案

数字化时代&#xff0c;电子商务已成为企业拓展市场的重要渠道。对于想要建立在线商店的企业来说&#xff0c;选择正确的技术堆栈至关重要。 Java作为一种成熟且广泛使用的编程语言&#xff0c;为构建购物中心提供了强大的功能和灵活性。 商城Java源码&#xff1a;商城开发的核…

SSM开发(十二) mybatis的动态SQL

目录 一、为什么需要动态SQL? Mybatis 动态 sql 是做什么的? 二、多种动态 SQL 元素 三、示例 1、model定义 2、数据库定义 3、UserMapper接口及UserMapper.xml内容定义 if标签 choose/when/otherwise 标签 foreach标签 trim 标签 四、动态SQL注意 一、为什么需…

HCIA项目实践---OSPF的知识和原理总结

9.5 OSPF 9.5.1 从哪些角度评判一个动态路由协议的好坏&#xff1f; &#xff08;1&#xff09;选路佳&#xff08;是否会出环&#xff09; OSPF 协议采用链路状态算法&#xff0c;通过收集网络拓扑信息来计算最短路径&#xff0c;从根本上避免了路由环路的产生。 &#xff08…

HCIA项目实践---OSPF的基本配置

9.5.12 OSPF的基本配置 &#xff08;所搭环境如上图所示&#xff09; A 先配置IP地址 (先进入路由器R1的0/0/0接口配置IP地址&#xff0c;再进入环回接口配置IP地址) &#xff08;配置R2路由器的0/0/0和0/0/1以及环回接口的IP地址&#xff09; &#xff08;置R3路由器的0/0/0接…

github上创建person access token

在 GitHub 上创建 Personal Access Token&#xff08;PAT&#xff09; 时&#xff0c;权限设置非常重要。正确的权限设置可以确保 Token 能够访问所需的资源&#xff0c;同时避免授予过多权限带来的安全风险。以下是详细的权限设置说明&#xff1a; 1. 进入 Token 创建页面 登录…

【网络编程】之Udp网络通信步骤

【网络编程】之Udp网络通信步骤 TCP网络通信TCP网络通信的步骤对于服务器端对于客户端 TCP实现echo功能代码实现服务器端getsockname函数介绍 客户端效果展示 对比两组函数 TCP网络通信 TCP网络通信的步骤 对于服务器端 创建监听套接字。&#xff08;调用socket函数&#xff…

【教程】MySQL数据库学习笔记(七)——多表操作(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 第三章 《数据定义语言DDL》 第四章 《数据操…

国自然地区基金|影像组学联合病理组学预测进展期胃癌术后预后的研究|基金申请·25-02-13

小罗碎碎念 今天和大家分享一个国自然地区科学项目&#xff0c;执行年限为2020.01&#xff5e;2023.12&#xff0c;直接费用为34万元。 胃癌在我国发病形势严峻&#xff0c;现有TNM分期预后评估存在局限&#xff0c;难以满足精准医疗需求。本项目运用“医工结合&#xff0c;学科…

nvm下载安装教程(node.js 下载安装教程)

前言 nvm 官网地址&#xff1a;https://nvm.uihtm.com nvm 是一个 node.js 的版本管理工具&#xff0c;相比于仅安装 node.js&#xff0c;我们可以使用 nvm 直接下载或卸载 node.js&#xff0c;可以同时安装多个 node.js 版本&#xff0c;并动态的切换本地环境中的 node.js 环…

项目BUG

项目BUG 前言 我创作这篇博客的目的是记录学习技术过程中的笔记。希望通过分享自己的学习经历&#xff0c;能够帮助到那些对相关领域感兴趣或者正在学习的人们。 项目BUG 1.低频率信号(100k或 200K以下)可以直接用一根导线焊接出几根导线来分几路&#xff0c;高频率信号只能…

Apollo 9.0 速度动态规划决策算法 – path time heuristic optimizer

文章目录 1. 动态规划2. 采样3. 代价函数3.1 障碍物代价3.2 距离终点代价3.3 速度代价3.4 加速度代价3.5 jerk代价 4. 回溯 这一章将来讲解速度决策算法&#xff0c;也就是SPEED_HEURISTIC_OPTIMIZER task里面的内容。Apollo 9.0使用动态规划算法进行速度决策&#xff0c;从类名…

吴恩达深度学习——词嵌入

内容来自https://www.bilibili.com/video/BV1FT4y1E74V&#xff0c;仅为本人学习所用。 文章目录 词表特征词嵌入的类比推理嵌入矩阵词嵌入Word2Vec跳字模型模型细节负采样 GloVe词向量&#xff08;了解&#xff09; 情绪分类 词表特征 使用 one-hot 对词汇进行编码时&#x…

数据结构——Makefile、算法、排序(2025.2.13)

目录 一、Makefile 1.功能 2.基本语法和相关操作 &#xff08;1&#xff09;创建Makefile文件 &#xff08;2&#xff09;编译规则 &#xff08;3&#xff09;编译 &#xff08;4&#xff09;变量 ①系统变量 ②自定义变量 二、 算法 1.定义 2.算法的设计 &#xff…

达梦:TPCC 压测

目录 造数1. 脚本启动2. 检查数据库信息3. 删除旧用户和表空间4. 创建新的表空间5. 创建用户和表6. 数据加载7. 创建索引8. 创建存储过程和序列9. 检查数据空间使用情况10. 启用表的快速访问池11. 数据加载完成总结 压测1. 脚本启动2. 检查数据表空间3. 设置表的快速池标志4. 检…

2024 StoryDiffusion 文字/文字+图像----->视频

基于扩散模型的生成模型在生成长序列图像和视频时面临内容一致性的重大挑战&#xff0c;尤其是涉及复杂主题和细节的场景中&#xff0c;角色身份、服饰风格等元素难以保持连贯。传统方法通常依赖潜在空间的运动预测&#xff0c;但长视频生成时易出现不稳定性。针对这些问题&…