数字电路实验报告

发布时间 : 星期六 文章数字电路实验报告更新完毕开始阅读

wire [3:0] erbit;

assign hmnum[0] = num[3]^num[1]^num[0], hmnum[1] = num[3]^num[2]^num[0], hmnum[2] = num[3]^num[2]^num[1];

assign ckhmnum[0] = misnum[3]^misnum[1]^misnum[0]^hmnum[0], ckhmnum[1] = misnum[3]^misnum[2]^misnum[0]^hmnum[1], ckhmnum[2] = misnum[3]^misnum[2]^misnum[1]^hmnum[2];

assign misnum[0] = num[0]^mistake[0], misnum[1] = num[1]^mistake[1], misnum[2] = num[2]^mistake[2], misnum[3] = num[3]^mistake[3];

assign erbit[0] = (~ckhmnum[2])&ckhmnum[1]&ckhmnum[0], erbit[1] = ckhmnum[2]&(~ckhmnum[1])&ckhmnum[0], erbit[2] = ckhmnum[2]&ckhmnum[1]&(~ckhmnum[0]), erbit[3] = ckhmnum[2]&ckhmnum[1]&ckhmnum[0];

assign out = erbit ^ misnum; endmodule

5

这段代码,我用的assign语句,对wire类型进行赋值,因为在TTL电路之中并没有用到寄存器,而且这是一个典型的组合逻辑电路,所以并没有只用reg寄存器类型的变量。 其中的每一个赋值都和上述的TTL电路相对应。其中num为输入的数据,mistake为造错的输入,hmnum为由输入数据所得到的的海明码,misnum为造错之后线路上的值,ckhmnum为根据海明码和数据生成的用于纠错的海明码,而erbit为根据ckhmnum所得到的哪一位错误的信息,最后根据这信息将错误的位进行改正。 下面是根据verilog编译仿真后的波形图

如图,当造错数据只与原数据有一位错(1000,0100,0010,0001)时,输出的数据和输入的数据是一样的,通过海明码将错误的一位数据进行了修正。没有错误的时候(0000),输出数据和输入数据也是一样的。 实验小结:

这个实验让我熟悉了本实验所用的软件的使用方法,如何利用quartus软件,画电路图,并且编译仿真,以及利用verilog HDL编写简单的组合逻辑电路,以及利用quartus软件对编写的verilog程序进行编译,仿真,以及基本的数字电路设计调试方法,本实验让我受益匪浅。

6

实验二 十六进制译码计数器的设计

实验目的:

1.掌握设计组合逻辑电路的方法

2.不同器件,不同设计方法的比较

3掌握数码显示与译码器电位间的关系,掌握小规模可编程芯片的应用,掌握GAL

方程的设计

实验要求:

用GAL 方程设计方法进行实验,并用MAX+PLUAS进行原理图形设计并仿真验证 实验器件:

计算机及相关软件,实验教学板,GAL16V8芯片,插线等 实验原理:

G f VCC a b a a b 1 2 3 4 5 A b a c c f b d g d e e c e f f h d g g 6 7 8 9 10 10 h h h e d VCC c h

七段发光二极管管脚说明 共阴型 共阳型

7

由七段管的管脚图可以列出真值表

输入信号 A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 数码 a 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 b 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 七段数码管管脚信号 c 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 d 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 e 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 f 1 0 0 0 1 1 1 0 1 1 1 1 0 0 1 g 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 A B C D E

8

联系合同范文客服:xxxxx#qq.com(#替换为@)