当前位置: 首页 > news >正文

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

基础逻辑门是数字电路设计的核心元件,它们执行的是基本的逻辑运算。通过这些基本运算,可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门(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

相关文章:

  • 【Elasticsearch】runtime_mappings搜索请求中定义运行时字段
  • 微软AutoGen高级功能——Magentic-One
  • LabVIEW软件需求开发文档参考
  • Win11配置wsl、ubuntu、docker
  • 【哇! C++】内联函数、auto关键字、基于范围的for循环、指针空值nullptr
  • git bash在github的库中上传或更新本地文件
  • 本地部署Deepseek-R1模型指南:从Ollama安装到RAG应用
  • 【Linux】Ubuntu Linux 系统——Node.js 开发环境
  • Spring Security,servlet filter,和白名单之间的关系
  • C#中的GC机制简析
  • AI在电竞比分网中的主要应用场景
  • 关于AURIX在debug时elf文件丢失无法调试
  • MySQL binlog的三种模式
  • MYSQL批量UPDATE的两种方式
  • JS设计模式之单例原型
  • 【深度学习模型分类】
  • 深入解析系统调用接口(System Call Interface, SCI)
  • 使用C#元组实现列表分组汇总拼接字段
  • Android中解决Button组件英文全部自动大写的问题
  • Oracle临时表空间(基础操作)
  • 穆迪下调美国主权信用评级
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 雷军内部演讲回应质疑:在不服输、打不倒方面,没人比我们更有耐心
  • 娃哈哈:自4月起已终止与今麦郎的委托代工关系,未来将坚持自有生产模式
  • 知名猎头公司创始人兼首席执行官庄华因突发疾病逝世,享年62岁
  • 佩斯科夫:若普京认为必要,将公布土耳其谈判俄方代表人选