• Logisim的使用


    准备

    通过Logisim的官网下载适合你机器的Logisim的软件,启动Logisim应用程序(Logisim可能有点bug,如果程序运行诡异,可能内部已经奔溃,最好的解决方法是重新启动它)。

    Logisim 高阶使用

    先介绍两个有用的Logisim的功能,对后续实验会很有帮助。

    Tunnel

    Tunnel允许你绘制“隐形线”将两个点绑定在一起。Tunnel根据分配给线的标签来分组,这写标签是区分大小写的,他们用于连接线,如图所示:

    要小心电线通过Tunnel与哪些电线相连,反过来也可以,如图:

    Splitter

    顾名思义,就是分离器,将n位输入,分成m组输出(组数和每组成员都是可以调节的)。其实它也能够反过来用,即将n位输入合成一个n位的输出。

    下面这个,就是将一个16位数,整体循环右移两位。

    Extenders 扩展器

    在更改连线宽度时,为了清晰起见,应使用Bit extender 位扩展器。

    例如考虑将8位扩展成16位,一种做法是利用Splitter,将原数与00000000合并,如图

    下面有一种更简便的做法,更易于阅读,并且不容易出错

    在考虑丢弃比特位情况下,它可以做着“相反”的工作

    实验

    要求:根据你对Splitter和多路复用器的知识和经验,你可以实现一个非平凡的组合逻辑块:rotr,代表“向右循环“,rotr A,B表示将输入A的位模式”向右循环“B位。

    例如,A为0bc110101,B为ob0101(即十进制5),则该电路块的输出为ob110101110101,请注意,最右边的5位从值的右端循环到左端。

    在RTL中,该操作类似于"R = A >> B || A << (16 - B)"。

    允许使用 除Shift位移器以外 的任何组合逻辑电路,在main的子电路中使用你的rotr子电路。

    提示一:在开始接线之前,你应该仔细考虑如何将此问题分解为较小的问题并将它们连接在 一起。在实现 rotr 时,可以随意使用其他子电路。如果你不这样做,等着后悔吧。

    提示二:虽然我们给你了 rotr 的 RTL 表示,但这并不意味着它是看待这个问题的最佳方式。 想想 B 的输入位并考虑如何有效地使用 splitter! 

    提示三::如果使用一个大的 splitter 接线会很混乱,有时可以将多个 splitter 串起来,事情会 更加局部化和整洁。例如,将 1 个输入分离成 16 个输出可以用一个 splitter 分出 4 个分支, 每个分支分别到一个有四个分支的 splitter。

    思路

    首先分别制作循环右移1位、2位、4位、8位的子电路(记得考虑子电路复用),其中右移1位可以用Splitter分离出16位,然后错一位连接再用Splitter合并。

    将B的4位分离出来,分别作4个2-to-1-MUX的使能端。

    my lab 这个我写的,有错误欢迎指出,谢谢!

  • 相关阅读:
    OS + Linux + zipTool / tar / tar.gz / zst
    project scm
    product wiki confluence
    script ActionScript / ColdFusion
    链表例题
    链表原理
    链表例题
    链表原理
    链表原理
    链表原理
  • 原文地址:https://www.cnblogs.com/lfri/p/9790102.html
Copyright © 2020-2023  润新知