|
看看 TestBench 文件哪里有问题? 读txt 文件,仿真时全是“0”,但是我txt 文件里有数据的呀,ISE自带模拟器
module UARTAutomatic_Tb();
reg Clk ;
reg RSTn ;
reg Rxd;
wire Txd ;
reg [7:0] RxdMem[0:127] ;
reg [7:0] TxdMem[0:127] ;
reg TxdClk ;
parameter BAUDRATE = 9600 ;
parameter SAMPLECLKPERIOD = 1_000_000_000/BAUDRATE/16 ;
parameter SYSCLKPERIOD = 20 ;
//parameter SAMPLECLKPERIOD = 50_000_000/BAUDRATE/16 ;
parameter TXDCLK = 1_000_000_000/BAUDRATE ;
task HarwareReset ;
input [3:0] HoldLowTime ;
begin
RSTn = 1'b1;
wait (Clk !== 1'bx);
@ (negedge Clk);
RSTn <= 1'b0;
repeat(HoldLowTime)
@ (negedge Clk);
RSTn <= 1'b1;
end
endtask
task RxdData ; //声明的输入端口,调用任务时,需传递参数
input [7:0] DataNum ;
integer i; //任务内部变量,modelsim无法查看
begin
i = 0 ;
repeat(DataNum)
begin
@ (posedge TxdClk);
Rxd = 0 ;
repeat(8)
begin
@ (posedge TxdClk);
Rxd = RxdMem[i][0] ;
RxdMem[i] = {1'b0,RxdMem[i][7:1]} ;
end
@ (posedge TxdClk) ;
Rxd = 1 ;
i = i + 1 ;
end
end
endtask
initial
begin
Clk = 0 ;
TxdClk = 0 ;
RSTn = 1 ;
Rxd = 1 ;
HarwareReset(4) ;
$readmemh("E:/ise/myUart/rtl/RxdMem.txt",RxdMem) ;
$readmemh("/TxdMem.txt",TxdMem) ;
RxdData(9) ;
end
always
#(SYSCLKPERIOD/2) Clk = ~Clk ;
//always
//#TXDCLK TxdClk = ~TxdClk ;
initial
begin
#13
forever
#(TXDCLK/2) TxdClk = ~TxdClk ;
end
UARTAutomatic UARTAutomaticEx01
(
.Clk ( Clk ),
.RSTn ( RSTn ),
.Rxd ( Rxd ),
.Txd ( Txd )
);
endmodule
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|