FPGA串口程序求助
时间:10-02
整理:3721RD
点击:
看了一下黑金开发板的串口发送程序,其中: 8'd16: begin
tx <= datain[0]; //发送数据 0 位
presult <= datain[0]^paritymode;
idle <= 1'b1;
cnt <= cnt + 8'd1;
end
8'd32: begin
tx <= datain[1]; //发送数据 1 位
presult <= datain[1]^presult;
idle <= 1'b1;
cnt <= cnt + 8'd1;
end
。
8'd144: begin
tx <= presult; //发送奇偶校验位
presult <= datain[0]^paritymode;
idle <= 1'b1;
cnt <= cnt + 8'd1;
end
标红的是怎么回事啊,为什么数据要^(异或)啊,什么作用。为什么0位和校验位与paritymode异或,而其他位于presult异或。
tx <= datain[0]; //发送数据 0 位
presult <= datain[0]^paritymode;
idle <= 1'b1;
cnt <= cnt + 8'd1;
end
8'd32: begin
tx <= datain[1]; //发送数据 1 位
presult <= datain[1]^presult;
idle <= 1'b1;
cnt <= cnt + 8'd1;
end
。
8'd144: begin
tx <= presult; //发送奇偶校验位
presult <= datain[0]^paritymode;
idle <= 1'b1;
cnt <= cnt + 8'd1;
end
标红的是怎么回事啊,为什么数据要^(异或)啊,什么作用。为什么0位和校验位与paritymode异或,而其他位于presult异或。
你随意的写8位01,按照程序的流程走一遍,最后异或的结果就是奇偶检验的结果。如果你写的有偶数个1则presult结果是0;反之则为1。每一次presult的值是上一次运行完之后的值,这样才能达到奇偶检验的结果。