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。
本文来自博客园,作者:hematologist,转载请注明原文链接:https://www.cnblogs.com/littleMa/p/5318560.html
posted on 2016-03-25 10:46 hematologist 阅读(211) 评论(0) 编辑 收藏 举报