verilog task2

1、问题:串口的发送和接收

系统时钟50Mhz,波特率119200。系统时钟计数约2604个,才是一位数据的传输时间。

模拟接收的任务函数rx_data_task():LSB first

 1 task rx_data_task;
 2     input [11:0] RXD;
 3     reg [3:0] i;
 4     begin
 5         for (i=0;i<=11;i=i+1) begin
 6             rx = RXD[i];
 7             repeat (2604) @(posedge clk);
 8 
 9         end
10     end
11 endtask

调用此task时:

1     rx_data_task(12'b10_1100_1010_01);

模拟发送的任务函数tx_data_task():

task tx_data_task;
    input [7:0] TXD;
    reg [3:0] j;
    begin
        tx_data = TXD;
        @(negedge clk);
        tx_en =1'b1;
        @(negedge clk);
        tx_en =1'b0;
        for (j=0;j<=11;j=j+1) begin
            repeat (2603) @(posedge clk);

        end
    end
endtask

调用此task时:

1     tx_data_task(8'b1100_1010);

 

2、奇偶校验

采用偶校验时:原数据及校验位的异或为0,所以校验的结果出错时为1。

采用奇校验时:原数据及校验位的异或为1,所以校验的结果出错时为0。

posted on 2016-03-25 10:46  hematologist  阅读(211)  评论(0编辑  收藏  举报

导航