实验六 异步串行通信奇偶校验电路设计
一、实验目的
学习和掌握使用Verilog语言设计奇偶校验电路的方法
二、实验原理
异步串行通信中一帧数据的格式为:1位起始位,5-8位数据位、1位奇偶校验位和11.52位停止位。其中数据位和奇偶位为有效数据,能够被机器识别,起始位和停止位用于传输同步。
奇校验:确保整个被传输的数据中“1”的个数是奇数个,即数据位中“1”的个数是奇数个时校验位填“0”,否则填“1”;
偶校验:确保整个被传输的数据中“1”的个数是偶数个,即数据位中“1”的个数是奇数个时校验位填“1”,否则填“0”。
三、实验内容
编写一段程序,能够实现对拨码开关输入的并行7位数据自动的加入奇偶校验位,并在LED发光管上显示出来。
要求:
1.设置一个奇校验和偶校验选择按键。
2.设置一个启动按键,当启动按键按下后,给数据加入奇偶校验并输出。
3.注意按键的消抖。
程序设计:
module CNT(CLK5M,a,q,start,y);
    input CLK5M;
    input start,y;
    input [6:0]a;
    output [7:0]y;
    reg [7:0]q;
    reg t,start1;
    clk5M_20ms  u1(clk5M,clk20ms)
always@(posedge CLK20ms)
  begin       
      start1<=start; //start的值传给寄存器start1
end   
  always@(posedge  CLK5M)
  begin
    if(start1) //如果start确实为1,则证明有键按下,将7位数据相加赋给t
        begin
        t<=a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6];
        if(y) q<={~t,a};//如果为奇校验则t取反后与a并位形成8位二进制数
        else    q<={t,a}; //否则直接将ta并位形成8位二进制数
        end
        else        q<=0;
    end
begin和start区别endmodule
分析:将实验五的消抖程序与本次程序建在同一个文件夹内,运用例化语句使程序简单。程序设计主要思路为输入一个7位二进制数,将其各位相加起来,其结果存入一个中间寄存器中,按下启动键,如果进行奇校验则对中间寄存器中的值取反后再与输入值并位后输出,若进行偶校验,则直接将中间寄存器中的值与输入值并位后输出。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。