ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

【数电进阶】自己搭一个加法计算器

【数电进阶】自己搭一个加法计算器 算术逻辑单元半加器只能完成一半功能的加法器无法接收进位运作逻辑是A和B是看作二进制中的其中一位比如点亮是1没有点亮是0但是可以看到我们只有两个输出信号“sum”“C”期中sum指的是相加得“1”“c”代表得是相加后进位得“1”。比如说二进制01和01相加这里只能计算最后一位的11那么二进制是得0进1所以是sum不亮C亮全加器继承半加器功能可以实现接收进位此处C脚理解成前一步计算中进位的1通过连接使用可以实现多位加法计算具体可以参考八位二进制加法器C脚连接上一步计算中的C脚八位二进制加法方法1用多个全加器实现的八位二进制数值的相加展示如题所示红框为A蓝框为B读数从下往上即1010 10101010 01010001 0100 1111Cr显示进一位注意二进制的位数是从上往下依次是最低位到最高位也就是说最高位在底下方法二用分裂/合并器辅助做的八位二进制加法注意二进制的位数是从上往下依次是最低位到最高位也就是说最高位在底下分列合并器是怎么用的这里有一些官方文档可供参考图一为分裂器设置图二是合并器的设置分裂器/合并器分裂信号或创建总线。 可以导出为 VHDL/Verilog。输入:0-7输入位 0-7输出:0输出位 01输出位 12输出位 23输出位 34输出位 45输出位 56输出位 67输出位 7属性:输入分割假设 4位2位2位作为输入可表示为 4,2,2。 还可以使用 * 号如 16 位表示为 1*16([Bits]*[Number])。还可以直接指定使用的位而不用关心顺序如 4-7,0-3。 输入位必须明确且完整的指定。输出分割假设 4位2位2位作为输出可表示为 4,2,2。 还可以使用 * 号如 16 位表示为 1*16([Bits]*[Number])。还可以直接指定使用的位而不用关心顺序如 4-7,0-3。 输出位可以使用多次如 0-7,1-6,4-7。溢出是指有符号数运算的结果超出了表示范围导致符号位被错误地改变。比如下图可以看见A为 1111 1111B为0000 0001相加的时候结果为1 0000 0000但是我们的结果位只有8个位所以在Cr那里显示溢出升位了有符号数和无符号数有符号数通常使用二进制补码表示其中最高位表示符号位最高位0表示正数最高位1表示负数。例如8位有符号数可以表示从 -1281000 0000到 1270111 1111 之间的整数其中最高位表示符号位。对于正数最高位为0其余位表示数值。补码负数的补码是把它的绝对值的二进制按位取反然后再加一就是负数的补码表示方法。除去符号位其它位取反然后1使用补码表示法的优点在于补码还可以避免在数值0上的两种表示方式0和-0因此更加方便和精确。负数补码示例推导可知1000 0000为-128实际1000 0000结果为-0但是没有-0这个概念所以计算机的-0补码就用来表示-128减法转加法计算有了补码的表示方法计算机就可以用加法电路来完成减法运算减法转加法计算 5 - 3 5 -3补码 0000 0101 1111 1101 0000 0010 28 位补码运算规则超出 8 位的进位直接丢弃乘法与除法乘法就是多次的加法3 × 5 就是 3 3 3 3 3除法就是多次的减法10 ÷ 3 就是 10 - 3 - 3 - 3一直减到发现结果小于等于0为止所以加减乘除都是同一套电路逻辑。逻辑运算存储器存储器是计算机中用于存储数据和程序的部件分为主存储器如RAM和辅助存储器如硬盘在数字电路中通常由寄存器阵列或RAM模块实现。基础记忆数据电路或门电路可以记住1一旦某一端点通过1就可以通过回路实现结果一直为1从而”记住“了1与门电路可以记住0一旦某一端点通过0就可以通过回路实现结果一直为0从而”记住“了1锁存器存一位数据WE为锁只有当WE打开时才可以写输入数据否则不论Din如何改变Out都不会发生改变寄存器简化图通过多个锁存器存多位数据但是实际上计算机中有成千上万的寄存器哪个寄存器什么啥时候存/输出非常容易混乱可能会出现存和取同时进行那么这时候就会有可能存入失败。CPU为了防止这种情况就使用时钟统一指令使得寄存器、触发器等存储元件能够在时钟的上升沿或下降沿统一动作从而避免时序混乱。时钟时钟是数字电路中的关键信号用于同步所有操作确保数据在正确的时间点被采样和更新。时钟信号是什么时钟信号是一种周期性的方波信号其高低电平的交替变化为数字电路提供时间基准使得寄存器、触发器等存储元件能够在时钟的上升沿或下降沿统一动作从而避免时序混乱。为什么需要时钟大家都见过划船的划船需要一个喊口号的主要原因是为了保证协调。通过喊口号船员们可以同步动作确保船在平稳且有效率地前进。边缘触发锁存器什么是边缘信号边缘信号指的是时钟信号上升沿或下降沿的瞬间变化用于控制锁存器在特定时刻捕获输入数据。也就是记录时间波段下降的时刻下降沿触发锁存器上升沿触发锁存器十六位寄存器内存单元格由16个内存单元格组成寄存器这个三角形是隧道只要两个三角形名字相等就能相当于链接起来了内存EPROMEPROM可擦除可编程只读存储器是一种非易失性存储器可以通过紫外线照射擦除数据并重新编程。flashFlash闪存是一种基于EEPROM电可擦除可编程只读存储器的非易失性存储器以块为单位进行擦除和写入具有高密度、低成本和快速读取的特点广泛应用于U盘、固态硬盘和嵌入式系统中。单片机中一般都会有flash或者EPROM引脚名称功能说明A寻址引脚Din数据输入端str输入使能高电平有效C时钟信号ld输出使能高电平有效D数据输出端CPU架构示例功能从内存中拿两个数到RegA和RegB中进行运算后再把结果放回到内存中组件准备运算器ALU加法信号名称描述位宽RegA寄存器A的数据8位RegB寄存器B的数据8位OE输出允许控制线1位ALU ResultALU内部计算结果用于观察调试8位Carry溢出位引出信号线1位Dout输出数据默认高阻态8位C输入进位直接给常量不用它就行1位寄存器WE写使能WE1可往寄存器写入数据OE输出使能OE1可将寄存器中的数据输出clock时钟信号Din数据输入端Dout数据输出端Stored data观察端不输出数据时方便我们观察寄存器中存的数据计数器计数器是数字电路中用于统计时钟脉冲个数的时序逻辑电路通常由触发器和门电路构成可实现对输入脉冲的计数、分频、定时等功能EN使能EN1时钟每次跳动Dout就会1clock时钟信号clear清除计数从零开始Dout数据输出端ovf溢出位查找表查找表会根据输入端口0-5的输入组成二进制数的D0-D5位人后根据这个二进制数去寻址并输出相应地址的内容根据上面的图片我们将数据存入查找表然后用一个计数器输出到查找表时钟每次跳动都会自动向后查找此时我们只需要不断按动时钟每8次按动即可完成一条指令码运算器部分整体步骤发实际上就是根据一开始输入的两个数拿到内存里面的两个地址和对应的数据然后把这两个数据加起来然后在存到内存里面我们采用实时时钟并输入想要的频率即可实现开启仿真计算机就自动运行
返回列表