9.21数电(加法器状态机独热编码)

news2024/11/19 18:22:48

加法

半加器

一位,分为两部分,一个是进位,一个是单位上的和

进位采取与门,单位上的和用异或门

全加器

进位数就是三个数进行加和,通过与门,就是两两过与门

描述每位的和项就是,只去描述那个1的情况,即三中有一个,或者三个都为1 

分解全加器

行波进位加法器

快速加法器

是说下一位的进位=此位的两个加数再加上来自上位的进数

当此位的两个加数均为1时,此位必定产生进位信号,这是本位产生的,即g,是生成函数

当有一个为1,且来自上位的进位为1时,也将产生进位信号,这个进位信号可以认为是来自上位的进位信号向后续传递的,所以可以称为传播函数

与行波加法器的比较 

行波是说从低到高,算完一位的数,就把这位的进数传递给下一位,再去计算下一位,依次传递,即行波。

超前进位是说,需要第i位之前的位数乘积,再或起来

就是每位都需要产生俩个值,一个是或门,一个是与门,然后每位的这两个值在在其他位里组合(与-或起来)除此之外每位还需要去参与计算本位,计算本位需要上位的进位

 

这个电路图的思路就是只传递每位的g0,p0,而不复用每位的计算结果,想的是算完后能复用那些重复出现的,比如p0c0

但其实难说效率谁高,传递原值的话,可以同时开始计算,但肯定是位数低的先计算完,因为要计算的项少,位数高的计算时间长,因为计算的项多,最终时间由最长的决定

即随着n的增加,n位超前进位加法器的复杂度也在迅速增加,n越大,或门上一级的与门就越多

如果说要复用(递归,打表思路)的话,其实还是行波的思路,就是得等到前面的都算完了这项才能开始算,虽然在前项算完基础上再增加一点规模用的时间可能并不是那么多。

与行波加法器的综合  

 这种还是建立在行波的框架上,只不过每个行波里算得更快一点,但还是要上一块算完才能算这一块

替代模块间的行波进位法的另一种方法是模块间采用第2级超前进位技术

 

 对于每一个模块,它并不给出代表该模块最高位的进位输出信号,而给出代表整个块的产生信号和传递信号

?具体指什么?

 在计算每个模块的位数时,需要上一个模块的进数

计算每个模块的进数时,也需要上个模块的进数

每个模块处理完后,产生位数结果与这个位的产生与传播信号,即只有计算完这个模块(需要来自上个模块的进位信号),才能计算出产生与传播信号

块0计算完,产生块0位数和G0,P0

G0,P0与c0计算出这个块的进位,传递给下个块

下个块开始计算

二进制乘法



`timescale  1ns/1ns
module mul_binary(
    input       wire                        sclk,
    input       wire                        rst_n,
    input       wire                        start,
    input       wire [7:0]                  data_a,
    input       wire [7:0]                  data_b,
    output      reg                         prd_vld,//product is valid
    output      reg [15:0]                  product                         
);

reg     add_shift;
reg     shift;
reg     load_data;
reg     prd_vld_r;
wire    M_eq_1;
wire    m0;

reg [15:0]  multiplicand;
reg [15:0]  multiplier;

parameter   S_idle=2'b01;
parameter   S_cal=2'b10;

reg [1:0]   state,next_state;

always  @(posedge   sclk or negedge rst_n)begin
    if(rst_n==1'b0) state<=S_idle;
    else    state<=next_state;
end

always  @(*)begin
    add_shift=1'b0;shift=1'b0;
    load_data=1'b0;prd_vld_r=1'b0;
    next_state=S_idle;
    case(state)
        S_idle:begin
            if(start==1'b1) begin
                next_state=S_cal;
                load_data=1'b1;
            end
            else    next_state=S_idle;
        end
        S_cal:begin
            if(M_eq_1==1'b1)begin
                add_shift=1'b1;prd_vld_r=1'b1;
                next_state=S_idle;
            end
            else    begin
                next_state=S_cal;
                if(m0==1'b1)    add_shift=1'b1;
                else    shift=1'b1; 
            end
        end
        default:next_state=S_idle;
    endcase
end

always  @(posedge   sclk or negedge rst_n)begin
    if(rst_n==1'b0) begin
        multiplicand<=16'd0;
        multiplier<=16'd0;
        product<=16'd0;
    end
    else    if(load_data==1'b1)begin
        multiplicand<={{8{data_a[7]}},data_a};
        multiplier<={{8{data_b[7]}},data_b};
        product<=16'd0;
    end
    else    if(add_shift==1'b1)begin
        multiplier<=multiplier>>1;
        multiplicand<=multiplicand<<1;
        product<=product+multiplicand;
    end
    else    if(shift==1'b1)begin
        multiplier<=multiplier>>1;
        multiplicand<=multiplicand<<1;
    end
end


always  @(posedge   sclk or negedge rst_n)begin
    if(rst_n==1'b0) prd_vld<=1'b0;
    else    prd_vld<=prd_vld_r;
end


assign  m0=multiplier[0];
assign  M_eq_1=(multiplier==1'b1) ? 1'b1:1'b0;

endmodule

组合逻辑与时序电路

组合逻辑电路的输出完全由输入值决定

触发器的输出取决千触发器的状态,而不是任意时刻的输入 值,触发器的输入将引起状态的改变

电路的输出同时依赖于电路之前的状态和当前输入值的一类常用 电路,这种电路称为时序电路

同步时序电路由组合逻辑以及一个或多个触发器实现

该电 路有一组原始输入 w, 并产生一组输出 z。触发器中存储的状态为 Q。在时钟信号的控制下触发器通过加在其输入端的组合逻辑输入,使得电路从一个状态变化为另一个状态。

即触发器由输入端和时钟信号决定

采用边沿触发的触发器可以确保一个时钟周期中仅发生一次状态变化。它们可以由时钟信 号的上升沿或者下降沿触发。这种产生状态变化的时钟边沿称为有效时钟边沿

Mealy机

的输出显然是 触发器当前状态和原始输入的函数

触发器具有两路组合逻辑输入,分别为原始输入w 和触发器的当前输出Q 。因此电 路状态的改变不仅取决千触发器的当前状态,还取决于电路的原始输人。

时序电路的输出总取决千触发器的当前状态,但却不 一定直接依赖于原始输入 。

状态机

确定电路中需要多少状态,并获得从一个状态到另一个状态的所有可能变化

一个好的方法是选择 一个特殊状态作为起始状态,这个状态应该是电 路加电或 者复位后进入的状态。

 在画表的时候就不用考虑时钟信号,只是说当前什么状态,以及当前这个状态在输入信号w的影响下会转变成什么信号(通过组合电路),而在时序图中就需要综合时钟信号,来确定什么时候应该发生转变

时钟沿就相当于使能端,只有有有效的时钟沿才会触发触发器,使其发生状态改变,时钟沿就相当于开关, 

由于采用上升沿触发的触发器,所有信号的变化都立即发生千时钟上升沿之后

交换器

为摩尔机,因为输出只与电路的现态有关,而与输入w无关

 

区分输出和次态,输出是时序电路整体的输出,次态是当前输入对时序电路自身造成的影响,二者都由当前的时序电路所产生

超速检测

理解这个状态图的关键点是当前时钟周期中的弧线上对应的输出标记来自千当前状态 结点。

状态机与verilog 

每个状态就是由参数的取值确定,状态变化就是参数改变的方式

时钟信号就是触发器触发的信号,而触发器触发后有什么影响,怎么作用,有什么作用则由触发器自身的特性决定

每个时刻,状态机都存储(保留)着两个状态,一个现态,一个次态,次态在确定输入后确定(有输入信号到达即可),即现态保持不变时,次态随着输入信号的改变而时刻改变,但次态的改变并不意味着现态要跟着改变,次态是下一个现态,至于什么时候是下一个,就看时钟信号,当时钟信号的时钟沿到来时,触发器被触发,触发器依据此时现态和输入信号而生成(或存储)的次态信号赋值给现态 。(在采用D触发器的情况下)

即触发器依据时钟信号决定什么时候更新现态,以及怎么更新

独热编码

就是有多少个状态就有多少个码(状态变量) 

确定次态表达式,有两个参数,一个是当前状态,一个是当前输入w 

但是触发器的数目从2个增加到了4个(即用来确定状态变量取值的机器多了,触发器在时钟信号的作用下,依据当前状态和输入信号w,产生次态) 

触发器接收两个信号,一个是时钟信号,一个是组合电路传来的次态信号,输出相应信号(根据相应的触发器性质),改变现态,并做出电路输出

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【js】navigator.mediaDevices.getDisplayMedia实现屏幕共享:

文章目录 一、效果图:二、实现思路:三、实现代码: 一、效果图: 二、实现思路: 文档&#xff1a; 【MDN】https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/mediaDevices web技术分享| WebRTC 实现屏幕共享 面试官&#xff1a;纯前端如何实现录屏并保存视频到本地&a…

Unity中Shader通道ColorMask

文章目录 [TOC](文章目录) 前言一、ColorMask是用来干什么的二、怎么做到和 Unity UI 中的 Shader 一样根据UI层级自动适配Shader中模板测试值1、借鉴Unity官方的 UI Shader 前言 Unity中Shader通道ColorMask 一、ColorMask是用来干什么的 ColorMask RGB | A | 0 | R、G、B、…

无法解析插件 org.apache.maven.plugins:maven-clean-plugin:3.2.0 尝试使用 -U

无法解析插件 org.apache.maven.plugins:maven-clean-plugin:3.2.0 尝试使用 -U 报错如下&#xff1a; 解决方案&#xff1a;在文件夹里面找到报错的文件&#xff0c;删除&#xff0c;然后刷新.pom文件&#xff0c;让maven重新下载即可

共享WIFI项目新时代:代理商如何玩转下半场?

在21世纪的信息化时代&#xff0c;科技的发展日新月异&#xff0c;人们的生活方式也随之发生了翻天覆地的变化。其中&#xff0c;共享经济作为一种新型的经济形态&#xff0c;正在全球范围内迅速发展。共享WiFi作为共享经济的一个重要组成部分&#xff0c;也在下半场的竞争中&a…

最佳开源DEM全国、省、市、县DEM数据分享

数据简介 哥白尼数字高程模型(Copernicus DEM, COP-DEM)由欧洲航天局发布&#xff0c;被行业公认为是目前最佳开源DEM&#xff0c;分辨率有30米和90米两种&#xff0c;该数据来源于WorldDEM&#xff0c;WorldDEM产品是基于0.4弧秒(对应分辨率10-12米)的TanDEM-X DEM处理后得到…

亚马逊,沃尔玛,塔吉特测评补单,撸卡撸货采退高成功率的技巧

做撸的只有在安全稳定的环境下才能不被平台检测&#xff0c;造成被砍单或F号&#xff0c;所以在没有专业团队指导下&#xff0c;建议大家不要轻易尝试&#xff0c;毕竟试错和时间成本才是最大的 亚马逊风控点很多&#xff0c;卖家和工作室想要实现伪装度足够高的环境&#xff…

qt creator创建项目和添加图片资源

目录 一、创建项目 二、放上需要的图片 三、再次打开项目 四、运行项目 一、创建项目 二、放上需要的图片 在创建的项目里新建一个文件夹&#xff0c;里面放上需要的图片 右击项目点击add new 去第一步加的图片的文件夹&#xff0c;把所有图片都加载进来 然后去ui文件里就可…

网络电视机顶盒怎么样?百元价位最佳网络机顶盒排名

网络电视机顶盒无疑是家家户户必备的&#xff0c;用网络机顶盒可以看电视&#xff0c;玩游戏&#xff0c;上网课&#xff0c;K歌&#xff0c;购物等&#xff0c;你认为网络电视机顶盒怎么样&#xff1f;值不值得买&#xff1f;本期我盘点了百元价位段最佳网络机顶盒排名&#x…

基于HTML5架构的综合管廊系统网络结构设计

摘 要&#xff1a;从网络拓扑结构、开放式实时以太网协议、控制层系统配置方面介绍了综合管廊的系统网络架构设计&#xff0c;分析了无线网络特性&#xff0c;阐述了基于HTML5架构所能实现的功能的初步构想&#xff0c;以便于综合管廊运维人员巡检&#xff0c;确保管廊本体安全…

Splashtop 的卓越安全性获得 ISO 27001 认证

在快速发展的数字环境中&#xff0c;实施强有力的安全措施尤为重要。Splashtop 始终优先考虑安全性&#xff0c;一如既往地在远程访问行业坚持以身作则。 我们最近宣布 Splashtop 已获得 ISO/IEC 27001 认证&#xff0c;证明了我们对信息安全、数据保护和合规性最高标准的坚定…

BSV 上用于通用计算的隐私非交互式赏金

如何安全地外包任何计算 我们提出了一种新颖的赏金机制&#xff0c;可以在区块链上安全私密地外包任意计算。解决方案和付款的交换是原子的和无需信任的&#xff1a;赏金发布者获得解决方案而赏金收集者获得奖励&#xff0c;或者两者都不发生。赏金发布者部署一个智能合约&…

CTF--攻防世界-杂项入门第一课

这是第一次接触杂项这个方向&#xff0c;所以就是根据writeup解的题&#xff0c;没有什么自己的思路&#xff0c;只是写一篇文章来记录一下解题过程。 下载题目后拿到一张图片&#xff0c;确实挺迷惑的&#xff0c;不知从何下手&#xff0c;根据大家的思路都是看看有没有隐写&a…

如何提升网站排名优化(百度SEO优化,轻松提升排名)

在当今互联网时代&#xff0c;拥有一个优秀的网站是很重要的。而一个网站如果能够在搜索引擎上的排名很靠前&#xff0c;那么将会带来更多的流量、更多的用户和更多的利润。那么如何提升网站排名优化呢&#xff1f;蘑菇号www.mooogu.cn 百度SEO优化的5个规则 1.关键词选取要合…

嵌入式MCU都有什么高级用法?

嵌入式MCU都有什么高级用法&#xff1f; 您举的几个例子&#xff0c;确实是MCU外设的一些高端玩法。只是不知道您是否想过&#xff0c;既然这些机制是被 人设计出来的&#xff0c;那它就是种标准用法。从微控制器的发展历程来看&#xff0c;许多硬件机制都是有了实际 需求后才…

面的嵌入式基础知识总结

面的嵌入式基础知识总结 做嵌入式系统开发&#xff0c;经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。 这样才能深入的研究下去。下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。 最近很多小伙伴找我&#xff0c;说想要一些嵌入式机学习资料&…

Python的多重继承和MixIn

前言&#xff1a; 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 多重继承 继承是面向对象编程的一个重要的方式&#xff0c;因为通过继承&#xff0c;子类就可以扩展父类的功能。 回忆一下Animal类层次的设…

【无公网IP】Windows搭建 WebDAV服务,并内网穿透公网访问

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结 自己用Windows Server搭建了家用NAS主机&#xff0c;W…

Flink Batch SQL Improvements on Lakehouse

本文整理自阿里云研发工程师刘大龙&#xff08;风离&#xff09;&#xff0c;在 Streaming Lakehouse Meetup 的分享。内容主要分为三个部分&#xff1a; Flink Batch on Paimon 挑战Flink Batch 核心优化后续规划 点击查看原文视频 & 演讲PPT 一、Flink Batch on Paimon 挑…

MySQL数据库入门到精通3--进阶篇(存储引擎,索引)

1. 存储引擎 1.1 MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念&#xff0c;为通过认…

selenium自动化测试-获取黄金实时价格

最近黄金比较火爆&#xff0c;想要获取黄金实时价格&#xff0c;方便后续监控预警价格&#xff0c;一般实时刷新的网页数据都是动态加载的&#xff0c;需要用到selenium自动化测试获取动态页面数据。 昨天学会了获取动态网页小说内容&#xff0c;同理也可以获取动态网页的黄金…