资讯详情

计算机数据表示实验(HUST)·头歌实训

8d9af3ba9e69428d98a59957422418d9.png

ps.如果内容与目录一致,请直接拉到页面底部

第一关:汉字国标转区位码实验

  • 实验目的
  • 视频讲解
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 常见的调试问题

实验目的

(1)帮助学生理解汉字机的内码和区位码,最终使用相关工具批量获取一段文字 GB2312 使用简单的电路实现机内码 GB2312 转换编码和区位码; (2)学生了解字形码显示的基本原理,可以在实验环境中实现汉字 GB2312 编码点阵显示。

视频讲解

实验内容

在 logisim 打开实验数据包中的实验数据包 data.circ 在相应的电路中,完成国家标码转区位码的子电路设计。输入引脚为16位 GB2312 双字节国标;输出为区号和位号(区号从1开始计数).6为了定义转换子电路的引脚,请在电路中复制相应的隧道标签信号,注意不要增加引脚,不要修改子电路的包装,以免影响其他电路模块中子电路的正常呼叫。

电路框架

data.circ

电路引脚

信号 输入/输出 位宽 说明
GB2312 输入 16 位 汉字机内码
区号 输出 7 位 汉字区位码中的区号-行号 ROW
位号 输出 7 位 汉字区位码中的位号-列号 COL

电路测试

如果汉字能正确显示华,说明正确

实验完成后,打开文本编辑工具 data.circ 复制粘贴所有文本信息 Educoder 平台的 data.circ 在文件中,单击评估按钮进行本关测试。平台将自动测试您设计的电路。为便于测试,请勿修改子电路包装。本关测试的用途如下:

 
  1. Cnt GB2312 ROW COL
  2. 00 bbaa 1b 0a
  3. 01 d6d0 36 30
  4. 02 bfc6 1f 26
  5. 03 bcbc 1c 1c
  6. 04 b4f3 14 53

常见的调试问题

注意实验文件data.circ 与GB2312ROM.circ前者应该在同一目录下调用GB2312ROM.circ电路,有可能每个人在做实验的时候都没有把它放在一起,然后在找不到这个文件的时候指向另一个目录GB2312ROM.circ,这样,将相应文件的路径带到电路文件中,上传平台时测试这条路径的文件肯定不存在,所以不能加载这条电路。 以下两种方法可以解决这个问题: (1)本地修改,本地直接修改data.circ,GB2312ROM.circ切割移动到新目录时,注意切割,确保再次打开data.circ找不到原来的GB2312ROM.circ,当提示找不到文件时,单击同一目录GB2312ROM.circ,然后退出存盘ok,再次提交测试。 (2)直接EduCoder修改平台,直接在代码框中搜索文件路径 去掉绝对路径,改为以下形式 远程更改后,将代码文本复制到本地,修改本地文件,当然也可以直接在本地编辑修改。 默认输入10进制,如果输入16进制,需要增加0x开头。

第二关:汉字机内码获取实验

  • 实验目的
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 常见的调试问题

实验目的

(1)帮助学生理解汉字机的内码和区位码,最终使用相关工具批量获取一段文字 GB2312 使用简单的电路实现机内码 GB2312 转换编码和区位码; (2)学生了解字形码显示的基本原理,可以在实验环境中实现汉字 GB2312 编码点阵显示。

实验内容

从国家标准码到区位码的转换电路完成后,可以在汉字显示电路中进行测试,并尝试在下图所示的电路中进行测试 ROM 将下面给出的指定句子存储在存储器中。请注意,不允许通过逐字检码表获取编码。我们应该掌握批量转换的方法和原理。

12345ABCDEFGABCDEFG轻轻地走了,就像我轻轻地来了一样;我轻轻地挥手告别西方的云彩。河边的金柳是夕阳下的新娘;波光中的艳影在我心中荡漾。

电路框架

data.circ

电路引脚

信号 输入/输出 位宽 说明
EduCoder 输出 16 位 该引脚用于汉字机内码 Educoder 请勿删除自动测试

电路测试

该电路中的计数器用于自动生成和存储汉字 GB2312 编码的 ROM 组件的地址序列可以在启用时钟后自动模拟右侧 LED 依次显示矩阵区域ROM提前预存的汉字内容(时钟自动模拟快捷键:Ctrl k)。

实验完成后,打开文本编辑工具 data.circ 复制粘贴所有文本信息 Educoder 平台的 data.circ 在文件中,单击评估按钮进行本关测试。平台将自动测试您设计的电路。为便于测试,请勿修改子电路包装。本关测试的用途如下:

 
  1. Cnt GB2312
  2. 00 a3b1
  3. 01 a3b2
  4. 02 a3b3
  5. 03 a3b4
  6. 04 a3b5
  7. 05 a3c1
  8. 06 a3c2
  9. 07 a3c3
  10. 08 a3c4
  11. ...

常见的调试问题

注意实验文件data.circ 与GB2312ROM.circ前者应该在同一目录下调用GB2312ROM.circ电路,有可能每个人在做实验的时候都没有把它放在一起,然后在找不到这个文件的时候指向另一个目录GB2312ROM.circ,这样,将相应文件的路径带到电路文件中,上传平台时测试这条路径的文件肯定不存在,所以不能加载这条电路。 以下两种方法可以解决这个问题: (1)本地修改,本地直接修改data.circ,GB2312ROM.circ切割移动到新目录时,注意切割,确保再次打开data.circ找不到原来的GB2312ROM.circ,当提示找不到文件时,单击同一目录GB2312ROM.circ,然后退出存盘ok,再次提交测试。 (2)直接EduCoder修改平台,直接在代码框中搜索文件路径 去掉绝对路径,改为以下形式 假如你的本地测试是ok的,上传Educoder平台输出为悬浮状态X,主要有两种可能的原因。 第一种可能是你上传了错误的代码,上传了其他目录的框架文件,根本没有实现电路,所以没有输出。为了判断这种情况,你只需要下载平台的代码并打开它;br> 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

下图就是没有测试引脚的框架,最新框架如上图,有一二educoder的输出引脚。

第3关:偶校验编码设计

  • 实验目的
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 常见调试问题

实验目的

帮助学生掌握奇偶校验基本原理和特性,能在 Logisim 中实现偶校验编码电路,检错电路,理解校验码传输的原理。

实验内容

在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成偶校验编码电路。实验电路输入输出引脚如图所示。输入:16位原始数据;输出:17位校验码(16位数据位+1位校验位),其中校验位存放在最高位,注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

电路框架

data.circ  

电路引脚

信号 输入/输出 位宽 说明
原始数据 输入 16 位 无冗余信息的原始数据
校验码 输出 17 位 最高位为偶校验位的偶校验数据

电路测试

电路框架提供了偶校验编码传输测试子电路,完成偶校验解码电路后可以进行测试,具体测试电路如下图所示:

完成实验后利用文本编辑工具打开 data.circ ,将所有文字信息复制粘贴到 Educoder 平台的 data.circ 文件中,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,本关测试用例如下:

 
  1. 00 bbaa 0bbaa
  2. 01 d6d0 0d6d0
  3. 02 bfc6 1bfc6
  4. 03 bcbc 0bcbc
  5. 04 b4f3 0b4f3
  6. 05 d1a7 1d1a7
  7. 06 cac7 1cac7
  8. 07 b9fa 1b9fa
  9. 08 bcd2 1bcd2
  10. 09 bdcc 0bdcc
  11. 0a d3fd 0d3fd
  12. 0b b2bf 1b2bf
  13. 0c d6b1 1d6b1
  14. 0d caf4 1caf4
  15. 0e b5c4 0b5c4
  16. 0f c8ab 0c8ab
  17. ...

常见调试问题

注意实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下,前者调用了GB2312ROM.circ电路,有可能大家做实验的时候没有放在一起,然后找不到这个文件的时候大家指向了另外一个目录的GB2312ROM.circ,这样对应文件的路径就带到电路文件中去了,上传平台时测试这个路径的文件肯定是不存在的,所以就无法加载这个电路。 解决这个问题可以采用以下两种方法: (1)本地修改,直接将本地的data.circ,GB2312ROM.circ剪切移动到一个新目录中,注意一定是剪切,要保证再次打开data.circ的时候找不到原来的GB2312ROM.circ,当提示找不到该文件的时候就就点击同目录的GB2312ROM.circ,然后存盘退出就ok,再次提交测试。 (2)直接EduCoder平台修改,直接在代码框搜索该文件路径 去掉绝对路径,改成如下形式即可 如果你本地测试是ok的,上传Educoder平台出现输出为悬浮态X,主要有两种可能的原因。 第一种可能是你上传错了代码,有可能上传的是别的目录的框架文件,根本没有实现电路,所以没有任何输出,要判断是否是这种情况只需要将平台的代码下载到本地打开看看就知道了; 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

第4关:偶校验解码电路设计

  • 实验目的
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 常见调试问题

实验目的

帮助学生掌握奇偶校验基本原理和特性,能在 Logisim 中实现偶校验编码电路,检错电路,理解校验码传输的原理。

实验内容

在logisim中打开实验资料包中的 data.circ 文件,在对应电路中完成偶校验检错电路。输入:17位校验码,校验位存放在最高位;输出:16位原始数据,1位检错位;实验电路输入输出引脚定义如图所示,注意17位校验码的每一位都通过分线器利用隧道标签引出,方便实验时使用。

电路框架

data.circ  

电路引脚

信号 输入/输出 位宽 说明
校验码 输入 17 位 最高位为偶校验位的偶校验数据
检错位 输出 1 位 1 表示有错,0 表示无错
数据位 输出 16 位 无冗余信息的原始数据

电路测试

电路框架提供了偶校验编码传输测试子电路,完成偶校验解码电路后可以进行测试,具体测试电路如下图所示:

完成实验后利用文本编辑工具打开 data.circ ,将所有文字信息复制粘贴到 Educoder 平台的 data.circ 文件中,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,本关测试用例如下:

 
  1. Cnt ParityD GB2312 Err
  2. 00 0bbaa bbaa 0
  3. 01 16d01 6d01 1
  4. 02 1bfc6 bfc6 0
  5. 03 1cbcd cbcd 1
  6. 04 14f34 4f34 1
  7. 05 11a7e 1a7e 0
  8. 06 1cac7 cac7 0
  9. 07 19fa3 9fa3 1
  10. 08 1cd23 cd23 1
  11. 09 1dcc7 dcc7 1
  12. 0a 13fd3 3fd3 0
  13. 0b 1b2bf b2bf 0
  14. 0c 16b17 6b17 0
  15. 0d 1caf4 caf4 0
  16. 0e 1c497 c497 1
  17. 0f 08abe 8abe 1
  18. ...

常见调试问题

注意实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下,前者调用了GB2312ROM.circ电路,有可能大家做实验的时候没有放在一起,然后找不到这个文件的时候大家指向了另外一个目录的GB2312ROM.circ,这样对应文件的路径就带到电路文件中去了,上传平台时测试这个路径的文件肯定是不存在的,所以就无法加载这个电路。 解决这个问题可以采用以下两种方法: (1)本地修改,直接将本地的data.circ,GB2312ROM.circ剪切移动到一个新目录中,注意一定是剪切,要保证再次打开data.circ的时候找不到原来的GB2312ROM.circ,当提示找不到该文件的时候就就点击同目录的GB2312ROM.circ,然后存盘退出就ok,再次提交测试。 (2)直接EduCoder平台修改,直接在代码框搜索该文件路径 去掉绝对路径,改成如下形式即可 如果你本地测试是ok的,上传Educoder平台出现输出为悬浮态X,主要有两种可能的原因。 第一种可能是你上传错了代码,有可能上传的是别的目录的框架文件,根本没有实现电路,所以没有任何输出,要判断是否是这种情况只需要将平台的代码下载到本地打开看看就知道了; 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

第5关:16位海明编码电路设计

  • 实验目的
  • 视频讲解
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 常见调试问题

实验目的

帮助学生掌握海明码设计原理与检错纠错性能,能独立设计实现汉字 GB2312 编码的海明校验编码体系,并最终在实验环境中利用硬件电路实现对应的编解码电路。

视频讲解

 

实验内容

在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验编码电路。输入输出引脚定义如图所示。输入:16位原始数据;输出:22位校验码(16位数据位+5位校验位+1位总校验位),注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

电路框架

data.circ  

电路引脚

信号 输入/输出 位宽 功能描述
原始数据 输入 16 位 原始待编码数据
海明码 输入 22 位 海明编码

电路测试

完成海明解码电路后可以在海明编码传输电路中进行测试。

Educoder测试:确认实验完成正确后可利用文本编辑工具打开 data.circ ,将所有文字信息复制粘贴到 Educoder 平台的 data.circ 文件中,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,本关测试用例如下:

 
  1. Cnt GB2312 Hamming
  2. 00 bbaa 373a52
  3. 01 d6d0 3aed88
  4. 02 bfc6 177cb9
  5. 03 bcbc 374b68
  6. 04 b4f3 36cf95
  7. 05 d1a7 3a9ab4
  8. 06 cac7 19acb5
  9. 07 b9fa 171fda
  10. 08 bcd2 174d11
  11. 09 bdcc 375c61
  12. 0a d3fd 3abf6e
  13. 0b b2bf 36ab76
  14. 0c d6b1 3aeb8e
  15. 0d caf4 19afa8
  16. 0e b5c4 16dc2b
  17. 0f c8ab 198a5f
  18. ...

常见调试问题

注意实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下,前者调用了GB2312ROM.circ电路,有可能大家做实验的时候没有放在一起,然后找不到这个文件的时候大家指向了另外一个目录的GB2312ROM.circ,这样对应文件的路径就带到电路文件中去了,上传平台时测试这个路径的文件肯定是不存在的,所以就无法加载这个电路。 解决这个问题可以采用以下两种方法: (1)本地修改,直接将本地的data.circ,GB2312ROM.circ剪切移动到一个新目录中,注意一定是剪切,要保证再次打开data.circ的时候找不到原来的GB2312ROM.circ,当提示找不到该文件的时候就就点击同目录的GB2312ROM.circ,然后存盘退出就ok,再次提交测试。 (2)直接EduCoder平台修改,直接在代码框搜索该文件路径 去掉绝对路径,改成如下形式即可 如果你本地测试是ok的,上传Educoder平台出现输出为悬浮态X,主要有两种可能的原因。 第一种可能是你上传错了代码,有可能上传的是别的目录的框架文件,根本没有实现电路,所以没有任何输出,要判断是否是这种情况只需要将平台的代码下载到本地打开看看就知道了; 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

第6关:16位海明解码电路设计

  • 实验目的
  • 视频讲解
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 调试问题
  • 常见调试问题

实验目的

帮助学生掌握海明码设计原理与检错纠错性能,能独立设计实现汉字 GB2312 编码的海明校验编码体系,并最终在实验环境中利用硬件电路实现对应的编解码电路。

视频讲解

 

实验内容

在 Logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成海明校验解码电路。输入输出引脚定义如图,输入:22位校验码;输出:16位原始数据,1位检错位;2位检错位;无错误状态位。注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

电路框架

data.circ 【实验资料包码云下载】

电路引脚

信号 输入/输出 位宽 功能描述
海明码 输入 22 位 海明编码
0位错 输出 1 位 为 1 表示检错码为零,未检测到任何错误
1 位错 输出 1 位 为 1 表示检错码不为零,检测到 1 位错
2 位错 输出 1 位 为 1 表示检错码不为零,检测到 2 位错
纠错后数据 输出 16 位 尽力纠错后的原始数据

电路测试

完成海明解码电路后可以在海明编码传输电路中进行测试。

Educoder测试:确认实验完成正确后可利用文本编辑工具打开 data.circ ,将所有文字信息复制粘贴到 Educoder 平台的 data.circ 文件中,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,本关测试用例如下:

 
  1. Cnt Hamming GB2312 NoErr Err1 Err2
  2. 00 373a52 bbaa 1 0 0
  3. 01 3aed88 d6d0 1 0 0
  4. 02 177cb9 bfc6 1 0 0
  5. 03 374b68 bcbc 1 0 0
  6. 04 36cf95 b4f3 1 0 0
  7. 05 3a9ab4 d1a7 1 0 0
  8. 06 19acb5 cac7 1 0 0
  9. 07 171fda b9fa 1 0 0
  10. ...
  11. 7f 1a8684 xxxx 0 0 1
  12. 80 190f3b xxxx 0 0 1

调试问题

常见调试问题

注意实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下,前者调用了GB2312ROM.circ电路,有可能大家做实验的时候没有放在一起,然后找不到这个文件的时候大家指向了另外一个目录的GB2312ROM.circ,这样对应文件的路径就带到电路文件中去了,上传平台时测试这个路径的文件肯定是不存在的,所以就无法加载这个电路。 解决这个问题可以采用以下两种方法: (1)本地修改,直接将本地的data.circ,GB2312ROM.circ剪切移动到一个新目录中,注意一定是剪切,要保证再次打开data.circ的时候找不到原来的GB2312ROM.circ,当提示找不到该文件的时候就就点击同目录的GB2312ROM.circ,然后存盘退出就ok,再次提交测试。 (2)直接EduCoder平台修改,直接在代码框搜索该文件路径 去掉绝对路径,改成如下形式即可 如果你本地测试是ok的,上传Educoder平台出现输出为悬浮态X,主要有两种可能的原因。 第一种可能是你上传错了代码,有可能上传的是别的目录的框架文件,根本没有实现电路,所以没有任何输出,要判断是否是这种情况只需要将平台的代码下载到本地打开看看就知道了; 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

第7关:海明编码流水传输实验

  • 实验目的
  • 视频讲解
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 测试用例

实验目的

学生熟悉流水数据传输机制,流水暂停原理,为最终的流水 CPU 设计做好技术储备,最终学生能对实验环境提供的五段流水编码传输电路进行简单修改,实现数据编码在不可靠网络中的可靠传输。

视频讲解

 

实验内容

图中将海明编码传输过程分成了5个阶段(取数,编码,传输,解码,显示)类似 CPU 指令流水线的处理过程。中间蓝色长条为流水接口部件(内部实际是若干存器/寄存器,用于锁存数据和控制信号),流水接口部件提供同步清零控制信号,试启用时钟自动仿真运行该电路(CTRL+T),观察接收方接受到的信息,当发生两位错时,将会发生错误。 尝试使用最少的器件简单修改该电路,使得解码阶段出现两位错时,系统能自动重传出错的编码(类似指令流水线中的分支跳转),从而使得该电路能正确传输所有数据。 解题思路:当出现两位错时,首先要将编码阶段和传输阶段的数据清空,这部分数据会导致接收端数据顺序不一致,同时要将已经进入显示阶段的数据锁定,并将取数阶段的地址回滚到正确的位置。

电路框架

data.circ

电路引脚

信号 输入/输出 位宽 功能描述
EDU 输入 1 为 1 时随机干扰器按照固定模式触发干扰,而不是随机,方便 EduCoder 在线测试
1err 输出 1 解码阶段检测到 1 位错
2err 输出 1 解码阶段检测到 2 位错
clr2 输出 1 编码阶段流水寄存器同步清零信号
clr3 输出 1 随机干扰阶段流水寄存器同步清零信号
clr4 输出 1 解码阶段流水寄存器同步清零信号
en5 输出 1 显示阶段流水寄存器使能信号

电路测试

Educoder 测试:确认实验完成正确后可利用文本编辑工具打开 data.circ ,将所有文字信息复制粘贴到 Educoder 平台的 data.circ 文件中,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,本关测试用例如下:

测试用例

 
  1. Cnt Err1 Err2 Clr2 Clr3 Clr4 En5
  2. 00 0 0 0 0 0 1
  3. 01 0 1 0 0 0 1
  4. 02 0 1 0 0 0 1
  5. 03 1 0 0 0 0 0
  6. 04 1 0 0 0 0 0
  7. 05 1 0 0 0 0 0
  8. 06 0 0 0 0 0 0
  9. 07 0 0 0 0 0 0
  10. 08 0 0 0 0 0 0
  11. 09 0 0 0 0 0 0
  12. ......

备注:(Cnt 为时钟节拍数)。 ####常见调试问题

注意实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下,前者调用了GB2312ROM.circ电路,有可能大家做实验的时候没有放在一起,然后找不到这个文件的时候大家指向了另外一个目录的GB2312ROM.circ,这样对应文件的路径就带到电路文件中去了,上传平台时测试这个路径的文件肯定是不存在的,所以就无法加载这个电路。 解决这个问题可以采用以下两种方法: (1)本地修改,直接将本地的data.circ,GB2312ROM.circ剪切移动到一个新目录中,注意一定是剪切,要保证再次打开data.circ的时候找不到原来的GB2312ROM.circ,当提示找不到该文件的时候就就点击同目录的GB2312ROM.circ,然后存盘退出就ok,再次提交测试。 (2)直接EduCoder平台修改,直接在代码框搜索该文件路径 去掉绝对路径,改成如下形式即可 如果你本地测试是ok的,上传Educoder平台出现输出为悬浮态X,主要有两种可能的原因。 第一种可能是你上传错了代码,有可能上传的是别的目录的框架文件,根本没有实现电路,所以没有任何输出,要判断是否是这种情况只需要将平台的代码下载到本地打开看看就知道了; 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

第8关:16位CRC并行编解码电路设计

  • 实验目的
  • 视频讲解
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 常见调试问题

实验目的

学生掌握 CRC 循环冗余校验码的基本原理,能看懂串行 CRC 编解码电路,并利用所学数字逻辑知识设计实现 GB2312 编码16位数据的并行 CRC 编解码电路。。

视频讲解

 

实验内容

在 Logisim 中打开实验资料包中的 data.circ 文件,尝试利用纯组合逻辑电路实现 CRC 并行编解码电路,输入输出引脚定义如图1.13所示。输入:16位原始数据;输出:22位校验码(16位数据位+5位 CRC 校验位+1位偶校验位),注意输入16位原始数据的每一位都已经通过分线器利用隧道标签引出,可以直接复制到绘图区使用。

电路框架

data.circ

 

电路引脚

信号 输入/输出 位宽 功能描述
原始数据 test 16 位 原始待编码数据
CRC 校验码   22 位 CRC 校验编码,可以采用 CRC-5,也可以采用 CRC-6 实现
无错误 输出 1 位 为 1 表示检错码为零,未检测到任何错误
1 位错 输出 1 位 为 1 表示检错码不为零,检测到 1 位错
2 位错 输出 1 位 为 1 表示检错码不为零,检测到 2 位错
纠错后数据 输出 16 位 尽力纠错后的原始数据

电路测试

完成 CRC 解码电路后可以在 CRC 编码传输测试电路中进行测试。

:确认实验完成正确后可利用文本编辑工具打开 data.circ ,将所有文字信息复制粘贴到 Educoder 平台的 data.circ 文件中,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,本关测试用例如下:

 
  1. Cnt Send ErrM Mask Err2 Err1 Recv
  2. 00 bbaa 0 000000 0 0 bbaa
  3. 01 d6d0 0 000000 0 0 d6d0
  4. 02 bfc6 0 000000 0 0 bfc6
  5. 03 bcbc 0 000000 0 0 bcbc
  6. 04 b4f3 0 000000 0 0 b4f3
  7. ...
  8.  
  9.  

常见调试问题

注意实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下,前者调用了GB2312ROM.circ电路,有可能大家做实验的时候没有放在一起,然后找不到这个文件的时候大家指向了另外一个目录的GB2312ROM.circ,这样对应文件的路径就带到电路文件中去了,上传平台时测试这个路径的文件肯定是不存在的,所以就无法加载这个电路。 解决这个问题可以采用以下两种方法: (1)本地修改,直接将本地的data.circ,GB2312ROM.circ剪切移动到一个新目录中,注意一定是剪切,要保证再次打开data.circ的时候找不到原来的GB2312ROM.circ,当提示找不到该文件的时候就就点击同目录的GB2312ROM.circ,然后存盘退出就ok,再次提交测试。 (2)直接EduCoder平台修改,直接在代码框搜索该文件路径 去掉绝对路径,改成如下形式即可 如果你本地测试是ok的,上传Educoder平台出现输出为悬浮态X,主要有两种可能的原因。 第一种可能是你上传错了代码,有可能上传的是别的目录的框架文件,根本没有实现电路,所以没有任何输出,要判断是否是这种情况只需要将平台的代码下载到本地打开看看就知道了; 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

第9关:CRC编码流水传输实验

  • 实验目的
  • 视频讲解
  • 实验内容
  • 电路框架
  • 电路引脚
  • 电路测试
  • 测试用例
  • 常见调试问题

实验目的

学生熟悉流水数据传输机制,流水暂停原理,为最终的流水 CPU 设计做好技术储备,最终学生能对实验环境提供的五段流水编码传输电路进行简单修改,实现数据编码在不可靠网络中的可靠传输。

视频讲解

 

实验内容

图中将 CRC 编码传输过程分成了5个阶段(取数,编码,传输,解码,显示)类似 CPU 指令流水线的处理过程。中间蓝色长条为流水接口部件(内部实际是若干锁存器/寄存器,用于锁存数据和控制信号),流水接口部件提供同步清零控制信号,试启用时钟自动仿真运行该电路(CTRL+T),观察接收方接受到的信息,当发生两位错时,将会发生错误。 尝试使用最少的器件简单修改该电路,使得解码阶段出现两位错时,系统能自动重传出错的编码(类似指令流水线中的分支跳转),从而使得该电路能正确传输所有数据。 解题思路:当出现两位错时,首先要将编码阶段和传输阶段的数据清空,这部分数据会导致接收端数据顺序不一致,同时要将已经进入显示阶段的数据锁定,并将取数阶段的地址回滚到正确的位置。

电路框架

data.circ

电路引脚

信号 输入/输出 位宽 功能描述
EDU 输入 1 为 1 时随机干扰器按照固定模式触发干扰,而不是随机,方便 EduCoder 在线测试
1err 输出 1 解码阶段检测到 1 位错
2err 输出 1 解码阶段检测到 2 位错
clr2 输出 1 编码阶段流水寄存器同步清零信号
clr3 输出 1 随机干扰阶段流水寄存器同步清零信号
clr4 输出 1 解码阶段流水寄存器同步清零信号
en5 输出 1 显示阶段流水寄存器使能信号

电路测试

Educoder 测试:确认实验完成正确后可利用文本编辑工具打开 data.circ ,将所有文字信息复制粘贴到 Educoder 平台的 data.circ 文件中,再点击评测按钮即可进行本关测试,平台会对你设计的电路进行自动测试,为方便测试,请勿修改子电路封装,本关测试用例如下:

测试用例

 
  1. Cnt Err1 Err2 Clr2 Clr3 Clr4 En5
  2. 00 0 0 0 0 0 1
  3. 01 0 1 0 0 0 1
  4. 02 0 1 0 0 0 1
  5. 03 1 0 0 0 0 0
  6. 04 1 0 0 0 0 0
  7. 05 1 0 0 0 0 0
  8. 06 0 0 0 0 0 0
  9. 07 0 0 0 0 0 0
  10. 08 0 0 0 0 0 0
  11. 09 0 0 0 0 0 0
  12. ......

备注:(Cnt 为时钟节拍数)。

常见调试问题

注意实验文件data.circ 与GB2312ROM.circ应该放在同一个目录下,前者调用了GB2312ROM.circ电路,有可能大家做实验的时候没有放在一起,然后找不到这个文件的时候大家指向了另外一个目录的GB2312ROM.circ,这样对应文件的路径就带到电路文件中去了,上传平台时测试这个路径的文件肯定是不存在的,所以就无法加载这个电路。 解决这个问题可以采用以下两种方法: (1)本地修改,直接将本地的data.circ,GB2312ROM.circ剪切移动到一个新目录中,注意一定是剪切,要保证再次打开data.circ的时候找不到原来的GB2312ROM.circ,当提示找不到该文件的时候就就点击同目录的GB2312ROM.circ,然后存盘退出就ok,再次提交测试。 (2)直接EduCoder平台修改,直接在代码框搜索该文件路径 去掉绝对路径,改成如下形式即可 如果你本地测试是ok的,上传Educoder平台出现输出为悬浮态X,主要有两种可能的原因。 第一种可能是你上传错了代码,有可能上传的是别的目录的框架文件,根本没有实现电路,所以没有任何输出,要判断是否是这种情况只需要将平台的代码下载到本地打开看看就知道了; 另外一种可能是你电路的封装引脚可能因为增删改引脚发生了变化,系统测试时对应的输出引脚没有连接正确,所以需要仔细检查待测电路的封装,目前所有框架文件均提供了待测电路的封装测试子电路,仔细检查引脚是否和连线错位。

q:3303847739。

备注“运算器设计(HUST)

私聊

 

 

 

标签: 红外光电传感器st198a

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台