(数字逻辑笔记)用Verilog实现一个简单ALU(组合逻辑)

这篇具有很好参考价值的文章主要介绍了(数字逻辑笔记)用Verilog实现一个简单ALU(组合逻辑)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验描述:

输入:两个4位二进制数,代表两个操作数A,B;一个3位控制信号operation,代表ALU要进行的运算。本实验中,ALU可以实现8种运算:

输出:4位结果,1位进位

operation | F

000 | A + B

001 | A - B

010 | B + 1

011 | B - 1

100 | NOT A

101 | A XOR B

110 | A AND B

111 | A OR B

实现代码:

/*********************
*    By VastCosmic
*    2021/12/26
*********************/

module ALU(A,B,operation,result,cout);
    input[3:0] A;
	input[3:0] B;
	input[2:0] operation;
	output reg[3:0] result;
	output reg cout;
 
    always @(A or B or operation) 
    begin
        case(operation) 
        //A+B
        3'b000: begin result <= A + B;end 	    
        //A-B
	    3'b001: begin result <= A - B;end
        //B+1
	    3'b010: begin result <= B + 1;end
        //B-1
	    3'b011: begin result <= B - 1;end
        //NOT A
	    3'b100: begin result <= ~A;end
        //A XOR B
	    3'b101: begin result = A ^ B;end     
        //A AND B
	    3'b110: begin result = A & B;end
        //A OR B
	    3'b111: begin result = A | B;end
        endcase
    end
endmodule

TestBench:

/*********************
*    By VastCosmic
*    2021/12/26
*********************/

`timescale 1ns/10ps
module ALU_tb;
reg [3:0] A;
reg [3:0] B;
reg [2:0] operation;
wire [3:0] result;
wire cout;

ALU ALU(A,B,operation,result,cout);
initial 
    begin
        A<=0000;B<=0000;operation <= 000;       //initial
        #10   A<=0001;B<=0001;operation <= 000; //A + B 0010
        #10   A<=0001;B<=0001;operation <= 001; //A - B 0000
        #10   A<=0001;B<=0001;operation <= 010; //B + 1 0010
        #10   A<=0001;B<=0001;operation <= 011; //B - 1 0000
        #10   A<=1001;B<=0001;operation <= 100; //NOT A 0110
        
        #10   A<=0001;B<=0010;operation <= 101; //A XOR B 
        
        #10   A<=0001;B<=0001;operation <= 110; //A AND B 
        #10   A<=0001;B<=0000;operation <= 110; //A AND B
        
        #10   A<=0001;B<=0000;operation <= 111; //A OR B 
        #10   A<=0000;B<=0000;operation <= 111; //A OR B
        #10   $stop;    
    end
endmodule

使用Vivado进行仿真:

仿真波形:

(数字逻辑笔记)用Verilog实现一个简单ALU(组合逻辑)文章来源地址https://www.toymoban.com/news/detail-439865.html

到了这里,关于(数字逻辑笔记)用Verilog实现一个简单ALU(组合逻辑)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零学verilog系列(4)组合逻辑电路设计方法

      目录 1.组合电路设计方法 1.1真值表方式(本质是最小项表达式) 1.2逻辑表达式方式 1.3结构描述方式 1.4抽象描述方式(从电路功能出发) 2组合电路设计项目 2.1数字加法器 半加器(1位加法器) 全加器 串行进位加法器(行波进位加法器) 超前进位加法器 2.2数据比较器 2.3数据选

    2024年02月04日
    浏览(40)
  • 组合逻辑电路二——数字逻辑实验

    (1)掌握数据选择器和译码器的功能。 (2)用数据选择器实验逻辑函数。 (3)用译码器实现逻辑函数。 (一)74LS151 74LS151是常用的8选1数据选择器,芯片内部有一个8选1数据选择器。通过输入不同的地址码C、B、A,可以控制输出Y选择8个输入数据D0~D7中的一个。 连线图和

    2023年04月26日
    浏览(43)
  • 【FPGA】组合逻辑电路三种建模方式(Verilog HDL 门级建模、Verilog HDL 数据流建模、组合电路行为级建模)

    目录   Verilog HDL 门级建模 各种逻辑门的表示和使用 门级建模书写实例 Verilog HDL 数据流建模 数据流建模 数据流建模书写实例 组合电路行为级建模 always语句 条件语句 多路分支语句 循环语句 for while repeat forever 行为级建模示例   可以理解为对逻辑电路中各个门依次进行描述

    2024年04月13日
    浏览(47)
  • 组合逻辑、时序逻辑的适用场合、数字逻辑电路的时序分析

    组合逻辑: 组合逻辑是一类逻辑电路,其输出仅仅取决于当前的输入信号状态,而不考虑过去的信号状态。 组合逻辑电路的输出完全由输入决定,没有时钟信号的概念,因此输出是输入的函数。 例子包括逻辑门(AND、OR、NOT等)和其他不带存储元件(如触发器)的电路。 时

    2024年02月03日
    浏览(42)
  • 【上海大学数字逻辑实验报告】三、组合电路(二)

    掌握8421码到余3码的转换。 掌握2421码到格雷码的转换。 进一步熟悉组合电路的分析和设计方法。 学会使用Quartus II设计8421码到余3码的转换电路逻辑图。 学会使用Quartus II设计2421码到格雷码的转换电路逻辑图。 8421码是最常用的BCD码,在这种编码方式中,每一位二进制代码的

    2024年02月05日
    浏览(67)
  • 【上海大学数字逻辑实验报告】四、组合电路(三)

    掌握多路选择器74LS151的原理。 掌握译码器74LS138的原理。 学会在Quartus II上使用多路选择74LS151设计电路。 学会在Quartus II上使用译码器74LS138设计电路。 多路选择器又称数据选择器或多路开关,它是一种多路输入单路输出的组合逻辑电路,其逻辑功能是从多个输入中选出一个,

    2024年02月05日
    浏览(37)
  • 数字电路实验一 组合逻辑电路的设计预实验报告

                                    ---用与非门74LS00,74LS20设计制作一个三人表决电路 (验证性实验) 1.查资料画出74ls00和74ls20芯片引脚图排列图,画出逻辑符号,掌握逻辑功能。 2.组合逻辑设计的一般步骤?用74LS00和74LS20设计制作一个三人表决电路(即3个人中有

    2023年04月25日
    浏览(46)
  • 数字电路和模拟电路-6组合逻辑模块及其应用(上)

    前言:结合之前学习的基本门电路、逻辑电路的分析与设计,去剖析解编码器、译码器、数据选择器、加法器、数值比较器的模块设计与应用。 目录 一、编码器 1、工作原理 2、编码器-74LS148分析 3、应用74LS148接成16线—4线优先编码器 二、译码器 1、译码器定义 2、74145译码器分

    2024年02月04日
    浏览(42)
  • 算术逻辑单元ALU

    ALU:arithmetic and logic unit。是能实现多组算术运算和逻辑运算的组合逻辑电路。 算术逻辑单元简称“ALU”,ALU是计算机的数学大脑,也是现代计算机的基石。 ALU就是*计算机里负责运算的组件,基本其他所有部件都用到了它。 第一个封装在单个芯片内的完整ALU:英特尔74181,在

    2023年04月23日
    浏览(42)
  • FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器

    该项目介绍了如何使用 Verilog 实现具有预生成系数的简单 FIR 滤波器。 不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一,因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。因此,在这个关于 FPGA 上 DSP 基础实用入门的教程中,将从一

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包