Verilog HDL的简单应用之74ls283功能的实现

news/2024/11/7 18:08:38/

我的错,人神共愤,天理难容……

简报

众所周知,74ls283是和74ls151还有74ls138一样应用广泛的电子元器件,其本体共有1+4+4+4+1+1+1=16根引脚,鉴于电源和接地引脚仍旧“没有用处”,我们再次对其进行忽略。下面笔者将利用Verilog HDL在Vavido环境下对其功能进行实现。

引脚

74ls283的逻辑符号共有14根引脚,其中1根为从低位进位数据输入端,4根为加数A数据输入端,4根为加数B数据输入端,4根为四位结果输出端,1根为向高位进位数据输出端。下面为详细介绍。

  1. 从低位进位数据输入端:共1根,是从上一个加法器或者其他的乱七八糟的什么东西引入的一个,对加数进行某些处理的数据的入口。总之只有一个口,顶多给得到的结果的低位加上一个1(毕竟数字信号只有1和0,他想加个2端口也不够…)
  2. 加数A数据输入端:共4根,具体功能同字面意思[doge]
  3. 加数B数据输入端:同上[doge]
  4. 结果输出端:共4根,具体功能同字面意思。注意:由于结果输出端一共4根,所以 4位数A + 4位数B 得到的结果中,五位数的最高位(第五位)无法作为结果输出,而是被转移至向高位进位数据输出端。
  5. 向高位进位数据输出端:共1根,是从这个加法器向下一个加法器或者其他的乱七八糟的什么东西传输进位数据的端口。

代码

说实话,笔者在写代码时犯了几个十分严重的错误…将在小结里面进行深刻的反思…

module x74x283(input  [3:0] A,input  [3:0] B,input        c0,output [3:0] S,output       c4);assign {c4,S}={1'b0,A}+{1'b0,B}+c0;endmodule

下面为在Vivado环境下的仿真文件代码。鉴于74ls283的特殊用途,笔者选择了几个个人认为能够全面证明功能的数字进行仿真操作。可能会有缺漏,如有意见或建议,恳请不吝赐教。

module SIM;reg  [3:0] A;reg  [3:0] B;reg        c0;wire [3:0] S;wire       c4;x74x283 u1(A,B,c0,S,c4);initial beginA=4'b0;B=4'b0;c0=0;#100;A=4'b1010; B=4'b0101; c0=0;#100;A=4'b1010; B=4'b0101; c0=1;    #100;A=4'b1011; B=4'b0101; c0=0;#100;A=4'b1011; B=4'b0101; c0=1;#100;A=4'b1011; B=4'b1101; c0=0;            end
endmodule

加法器…仿真文件真的没什么好说的…

仿真效果

在这里插入图片描述
根据波形图,我们可以发现代码可以实现两个四位二进制数字与来自低位的进位相加,并正确产生结果和对高位的进位,即可实现74ls283功能,符合预期。

小结

说出来各位观众老爷们可能不信,笔者写这段代码写了一个多小时…不是因为它难,也不是因为笔者一边写一边和女朋友聊天(笔者也没有女朋友…)而是因为今天脑子突然抽了一根大筋,先是受到进位影响用循环语句给他一位一位地进行加法运算,导致代码冗长(如图1),后面又在写仿真文件进行端口连接的时候顺序出错(如图二),之后的时间全浪费在找出这个问题上面了…真的是人神共愤,天理难容…各位看官一定要引以为戒…

图一在这里插入图片描述
图二
在这里插入图片描述


http://www.ppmy.cn/news/547930.html

相关文章

imx8烧写Linux系统,EASYARM-IMX283 烧写uboot和linux系统

新入手一台EASYARM-IMX283开发板(以下简称IMX823),价格比较便宜,配置也不错。 开发板默认安装了WINCE,我还是决定重新烧写uboot和linux内核。 开发板配套光盘里面有不少烧写工具,其中大部分都是windows平台下的工具,所…

EasyARM-i.MX283A 开发环境配置笔记

EasyARM-i.MX283A 开发环境配置笔记 准备开发环境所需的文件: 已上传网盘,自行下载 链接:https://pan.baidu.com/s/1C3SB3UR5Yfn8huMj5kP7GA 提取码:gy1y 一、创建虚拟机 使用:ubuntu-12.04-desktop-i386.iso 链接…

lm283_HMC283LM1_10

HMC283LM1 v04.1201 Typical Applications The HMC283LM1 is ideal for: • Millimeterwave Point-to-Point Radios • LMDS • SATCOM 11 LINEAR & POWER AMPLIFIERS - SMT Functional Diagram D E U IN T N O T C C S U I D D O R P Features SMT mmWave Package Psat Ou…

Verilog——串行四位加法器和超前四位加法器74HC283

Verilog——串行四位加法器和超前四位加法器74HC283 一. 串行四位加法器设计思路1. 一位全加器1.1原理1.2代码实现1.2.1设计模块1.2.2测试模块 1.3 仿真结果 2.用四个一位全加器串行成四位加法器2.1原理2.2代码2.2.1设计模块2.2.2测试模块 2.3仿真结果 二.超前四位加法器74HC28…

LeetCode:283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: …

LeetCode 283题解

AC 通过 public class LeetCode283 {public void moveZeroes(int[] nums) {int k 0; // nums[0-k] 存储的是 前面k 个不等于 0 的数for(int i 0; i < nums.length; i){if(nums[i]!0){if (k ! i) {// 0 1 2 0 当遍历 到1 时 k 还是0 0 1 交换后是 1 0 此时 k 1int tmp n…

lm283_BP283X 最小输入输出压差和OVP电压的关系

本程序旨在计算当选定开路输出电压时&#xff0c;计算出可以保证系统能 正常保护 的 最小输入输出压差 &#xff1b;(输入电压为Bulk 正常带载输出电压 Vo 150 V 正常带载输出电流 Io 120 mA 输入Bulk电容最大值 Vindc_max 373 V 系统工作频率 Fosc 90 KHz 开路电压 Vovp 200 V…

Imx283 Uboot2017+Linux3/4/5系统内核移植

Imx283 Uboot2017Linux3/4/5系统内核移植 前言 用的周立功的EasyArm283&#xff0c;实习的时候买的&#xff0c;一直没咋弄&#xff0c;前几天突然看到了想玩一下&#xff08;其实最近一直再画板子&#xff0c;想玩一下软件了哈哈&#xff09;&#xff0c;感觉2.34的内核有点…