[verilog]常用任务之模拟UART Rxd引脚输入数据

首先要声明一个2维数组,用来存放文件里的数据

reg     [7:0]               DataMem[0:127] ;

在initial语句块中将文件数据读入到数组里

$readmemh("DataMem.txt",DataMem) ;

任务内容

integer i;
task SendData ;    //声明的输入端口,调用任务时,需传递参数         
    input   [7:0]       DataNum ;  //需要发送的数据个数,不要大于DataMem的长度
    begin
        repeat(DataNum)
        begin
            @ (posedge TxdClk);
            Rxd     = 0 ;
            repeat(8)
            begin
                @ (posedge TxdClk);
                Rxd =DataMem[i][0] ;
                DataMem[i]   = {1'b0,DataMem[i][7:1]} ;
            end
            @ (posedge TxdClk) ;
            Rxd     = 1 ;
            i = i + 1 ;
        end
    end
endtask

调用方式

    SendData(16) ;

Good Good Study! Day Day Up!

原文地址:https://www.cnblogs.com/kdurant/p/4193396.html