基于Logisim的CRC编码电路实现.pdf
实验内容 基于 Logisim 的 CRC 编码电路实现 基于 Logisim 的 CRC 编码电路实现 专业 班级 学号 姓名 电话 邮件 报告日期2015-6-10 指导教师 2015 计算机组成原理课程论文计算机组成原理课程论文 计算机科学与技术学院计算机科学与技术学院 目录目录 1 实验目的.1 2 实验环境.1 3 实验内容.1 4 实验原理.1 4.1 CRC 码.1 4.2 CRC 编码原理.2 4.3 生成多项式选择. 3 5 方案设计.3 5.1 (7,4)CRC 编码 3 5.1.1 (7,4)CRC 编码电路图.4 5.2 (21,6)CRC 编码 4 5.2.1 (21,6)CRC 编码电路.5 6 过程与调试.5 6.1 实验实现步骤. 5 6.2 实验测试用例. 6 6.3 结果与分析. 7 6.3.1 测试结果7 6.3.2 结果分析7 6.4 故障与调试. 7 6.4.1 故障 1.7 6.4.2 故障 2.8 7 总结与心得.8 7.1 实验总结. 8 7.2 实验心得. 8 8 参考文献.9 1 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 1 实验目的 熟悉 Logisim 软件平台。 掌握运算器基本工作原理 掌握循环冗余编码CRC的原理 利用 Logisim 平台上已有的模块组成 CRC 编码电路 2实验环境 Logisim 是一款数字电路模拟的教育软件,每一位用户都可以通过它来学习如 何创建逻辑电路,方便简单。 它是一款基于 Java 的应用程序,可运行在任何支持 JAVA 环境的平台,方便学生来学习设计和模仿数字逻辑电路。Logisim 中的主要组 成部分之一就在于设计并以图示来显示 CPU。当然 Logisim 中还有其他多种组合分 析模型来对你进行帮助,如转换电路,表达式,布尔型和真值表等等。同时还可以 重新利用小规模的电路来作为大型电路的一部分。 3实验内容 学习使用 Logism 工具栏上的功能 学会使用子电路,并能将子电路放到 main 电路中使用 学习使用时钟,并能使用时钟单步或自动运行 学会使用分线器,理解线宽的概念 掌握循环冗余编码CRC的原理 完成(7,4)CRC 编码 完成(21,6)CRC 编码 4实验原理 4.1 CRC 码 2 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 循环冗余校验码(cyclic redundancy cheek,CRC)简称循环码或 CRC 码。二进 制信息沿一条信号线逐位在设备之间传送称为并行传送。 CRC 的编码格式如图所示,是在 K 位有效数据之后添 r 位校验码,形成总长度 为 n 的 CRC 码,简写作 Cn,k码。CRC 编码的关键技术在于如何从 k 位信息简便 得到 r 位校验码。 图 4.1 设被校验的数据 0121 .DDDDD kk 是一个 k 位的二进制代码, 将它表示为一个 k-1阶的多项式 Mx 0 1 1 2 2k 1 1k .DxDxDxDD kk 1-1 多项式1-1中的系数 D 取值为 0 或 1,与被校验的数据 M 一一对应,式中的 x 是一个伪变量,用 i x 指明各位的位置。 设校验码 p 的长度为 r,将被校验数据 D 左移 r 位后的结果为 位r DxDxDxD kk 0000 0 1 1 2 2k 1 1k 将 D 左移 r 位的目的是给 D 右边添 r 个 0,形成kr位长度的二进制代码,其 多项式形式为 r xxM。 如图 4.1 所示, CRC 码由 K 位数据 D 和 r 位校验码 P 组成, 求校验码 P 的多项式 Rx的方法如下 xG xR xQ xG xxM 1-2 Qx是商,Rx是余数,Rx所对应的二进制代码是校验码 P。可以证明存在一 个最高次幂为 n-kr 的多项式 Gx,即式1-2中 Gx成为生成多项式。 由式(1-2)可以推出 xM xG xRxxM 4.2 CRC 编码原理 3 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 CRC 编码是基于模 2 乘除法和减法来实现编码过程的。 模 2 加减运算就是按位 加减运算,即不带进位和借位的二进制加法和减法运算。模 2 加与模 2 减的结果相 同。运算规则如下 000,011,101,110 模 2 乘运算按模 2 加求部分积之和,无进位。 模 2 除运算即按模 2 减求部分余数,不借位。其上商原则是 1)部分余数首位为 1 时,商为 1,减除数。 2)部分余数首位为 0 时,商为 0,减 0。 3)当部分余数的位数小于除数的位数时,该余数为最后余数。 4.3 生成多项式选择 (1)生成多项式的最高位和最低位必须是 1。 (2)当被传送信息CRC 码任何一位发生错误时,被生成多项式进行模 2 后余 数应不为 0。 (3)不同位发生的错误,余数不同。 (4)对余数继续做模 2 除,应使余数循环。 5 方案设计 5.1 (7,4)CRC 编码 (7,4)CRC 编码可实现 16 位有效数据的编码。电路输入 4 位将要进行 CRC 编码的 01 串,通过时钟时序控制下在一个周期内完成 4 位数据的 CRC 编码,输出 7 位编码后的数据。根据上述实验原理,4 位有效数据,所以其生成多项式为 4 位, 所以只需要第一次将原数据与生成多项式异或得到余数,然后再根据余数的高位判 断是否为 0 来计算下一个余数,如果高位为 0,则只需要将该余数左移 1 位,然后 直接将数据通过二路选择器作为下一次的余数;如果高位为 1,则需要再次将左移 的数与生成多项式异或得到余数作为下一次的余数。因为编码的结果为 7 位,也就 是相当于在有效数据后面补 3 个 0 然后除以生成多项式,需要完整的运算 4 次才能 4 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 得到结果,所以在经过 4 次之后,才能得到最终的编码结果。并且在编码结束之后 自动停止电路。 时钟控制部分,因为要经过 4 次之后才完成整个运算,而且原始的有效数据只 用一次,所以在这个里面,我设计了 D 触发器来解决有效数据只进行刚开始的运算 这么一个功能,刚开始使能端为 0,所以二路选择端选择的是原始数据,后来 D 触 发器的使能端打开,而且设置 D 为 1,这时候就可以保证以后都是选择 1,也就是 经过移位后的数据,最后通过或门与计数器的进位来达到当计数为 3 进位时,时钟 保持高电平,也就是寄存器不再工作,这样就达到了锁存的目的。 5.1.1 (7,4)CRC 编码电路图 图 5.1.1 5.2 (21,6)CRC 编码 5 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 (21, 6) CRC 编码可实现 16 位有效数据的编码。 电路输入 16 位将要进行 CRC 编码的 01 串, 通过时钟时序控制下在一个周期内完成 16 位数据的 CRC 编码, 输出 21 位编码后的数据。16 位的编码与 4 位的编码难点在于有 16 位数据,所以每次要 通过移位计数器来进行逻辑右移, 还有每次如果得到异或后余数的高 2 位为 0 的话, 就需要把余数接上原始数据的后一位, 然后与 000000 进行异或, 得到下一次的余数, 如果结果为 1 的话, 需要将移位后的余数与生成多项式进行异或得到下一次的余数, 而且还有和第一个一样的问题,就是前 6 个必须全部用原始数据的高 6 位进行异或 运算得到余数后, 再判断下一次是和 000000 还是和生成多项式进行异或, 所以在这 里就设计了两个二路选择器,一个用来由 D 触发器控制只使初始数据进去,一个是 控制哪一个余数作为下一轮的余数。 然后通过时钟驱动, 在进行 16 次完整的周期之 后,也就得到了最后编码的结果。并且在编码结束之后自动停止电路。 5.2.1 (21,6)CRC 编码电路 图 5.2.1 6 过程与调试 6.1 实验实现步骤 6 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 1、 实验之前实现在草稿纸上写好整体实现的方法、 步骤和所需要用到的模块以 及大概连接的思路。在草稿纸上预先画出电路的示意图,便于实验操作的快速、准 确进行。 2、按照设计连接电路图,注意各模块连接的引脚是否正确相连,导线是否发生 交叉断路现象。 可以从 Logisim 软件的自动检测中可以很好地了解电路的连接情况。 若所有模块连接完成后,电路中出现红色、黄色或者灰色的导线,说明电路的连接 出现了问题。针对颜色异常的导线两段进行仔细地检查。修改电路直到不再出现异 常颜色导线。 3、利用测试数据进行测试,查看结果是否和预期一样,以判断电路图是否链接 正确,功能是否能准确实现。 6.2 实验测试用例 项目测试通过输入以下 4 组 4 位数据,4 组 16 位数据,分别记录电路输出值。 并在草稿纸上手算理想 CRC 编码结果进行比较。 生成多项式选取1011 表 6.1 CRC 编码用例及结果 输入待编码电路输出编码结果理论结果 1100010001011000101 2110011000101100010 3010101011000101100 4101010100111010011 生成多项式选取100011 表 6. 2 CRC 编码用例及结果 输入待编码电路输出编码结果理论结果 11010101111010100101010111101010000010101010111101010000010 200110101110101000011010111010100 001000011010111010100 00100 300101001010101000010100101010100 010000010100101010100 01000 401010010101001010101001010100101 111010101001010100101 11101 7 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 6.3 结果与分析 6.3.1 测试结果 利用测试用例进行测试,得到的结果均和预期保持一致,现将其中的两组结果 截图如下 (7,4)CRC 编码 图 6.3.1 (21,6)CRC 编码 图 6.3.2 6.3.2 结果分析 在电路中由于进行了计数器锁定,所以在最后运算完成之后,编码的结果将不 会再因为时钟的驱动产生变化,即得到最终的编码结果。 6.4 故障与调试 6.4.1 故障 1 在进行 4 位和 16 位 CRC 编码的时候,都需要刚开始直接输入一组数据,然后 8 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 直接每次逻辑移动一位,但这样的电路如何实现,并没有想到一个很好的办法,然 后就联想到在做组原的实验的时候用过的二路选择器,所以就考虑到用二路选择器 来在输入 0 的端口接上原始输入的数据,然后接下来只要保证控制端始终为高电位 就可以使得再输入的数据就不再是这个初始数据,所以就很容易联想到了在学习数 字逻辑的时候学到的 D 触发器,其输出状态和 D 的状态保持一致,所以,刚好在刚 开始输入原始数据的时候,让使能端为 0,这时候就是低电位,在其他的情况下, 就都是高电位了。就可以解决这个问题。 6.4.2 故障 2 在 16 位编码的时候,遇到了最后的余数到底是生成多项式与原始数据异或而 来,还是 000000 和原始数据异或而来的问题,这就取决于上一组余数的高 2 位是 0 还是 1,如果为 1,则是第一种,反之为第二种,这样就想到了继续用二路选择器来 选择哪一个作为下一个余数,而用该组余数的高 2 位作为控制端。 7 总结与心得 7.1 实验总结 本次实验主要作了如下几点工作 1) 熟悉使用了 logisim 隧道、寄存器、分离器、时钟、计数器、数据选择器 和移位寄存器,D 触发器等部件。 2) 利用异或门和二路选择器来实现取余功能 3) 设置生成多项式 Gx1011,Gx10010,作为项目测试用例, 分别选用 4 组 有代表性的数据进行了 CRC 编码电路测试,所得到的测试结果与理论结 果一致,所以在一定程度上认为电路是正确的。 4) 利用通道,把输入数据,生成多项式,编码结果放到一起,便于观察。 7.2 实验心得 9 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 对于本次实验的实验环境来说,熟悉 Logisim 里面的各种器件,比如移位寄存 器, 多路选择器,还有以前学过的 D 触发器,对于实验的最终完成有很大的好处, 当你知道要实现什么功能之后, 知道去从原件库里面拖出来, 然后设置好各种参数, 直接使用即可。 对于实验来说,明确实验要完成的功能,然后首先在草稿纸上写出表达式,分 析电路的时序控制,然后构思用什么器件,如何实现,这样对于最后实验的最终完 成有很大的好处,刚开始就是有一些问题并没有考虑清楚,所以直接画电路,导致 出现了一些问题,结果不正确的时候不知道哪里出现了问题,最后将整个实验的思 路再理一遍,也再次明确了实验的原理之后,最后耐心的修改,最终才得到正确的 结果。 最后就是在试验过程中出现了问题,一定要静下心来思考,完整的考虑到这种 可能出现的问题,然后加以解决。 8 参考文献 1 秦磊华, 王小兰. 计算机组成原理实验指导及课程设计指导书基于 EDA 平台. 武汉华中科技大学出版社,2010 年. 2 秦磊华,吴非,莫正坤.计算机组成原理. 北京清华大学出版社,2011 年. 3 DAVID A.PATTERSON美.计算机组成与设计硬件/软件接口原书第 3 版.北 京机械工业出版社. 2007 年. 4 袁春风编著. 计算机组成与系统结构. 北京清华大学出版社,2011 年. 1 华 中 科 技 大 学 课 程 实 验 报 告华 中 科 技 大 学 课 程 实 验 报 告 一、原创性声明 本人郑重声明本实验的实验报告内容,是由作者本人独立完成的。有关观点、方 法、数据和文献等的引用已在文中指出。除文中已注明引用的内容外,本报告不包含 任何其他个人或集体已经公开发表的作品成果,不存在抄袭行为。 特此声明 作者签字作者签字 二、对实验的学术评语 三、对实验的评分 评分项目 (分值) 报告撰写 (30 分) 实验过程 (70 分) 最终评定 (100 分) 得分 指导教师签字指导教师签字年月日年月日