write and read

int my_write(int fd,void *buffer,int length)
{
int bytes_left;
int written_bytes;
char *ptr;

ptr=buffer;
bytes_left=length;
while(bytes_left>0)
{
        /* 开始写*/
        written_bytes=write(fd,ptr,bytes_left);
        if(written_bytes<=0) /* 出错了*/
        {       
                if(errno==EINTR) /* 中断错误 我们继续写*/
                        written_bytes=0;
                else             /* 其他错误 没有办法,只好撤退了*/
                        return(-1);
        }
        bytes_left-=written_bytes;
        ptr+=written_bytes;     /* 从剩下的地方继续写  */
}
return(0);
}

int my_read(int fd,void *buffer,int length)
{
int bytes_left;
int bytes_read;
char *ptr;
  
bytes_left=length;
while(bytes_left>0)
{
   bytes_read=read(fd,ptr,bytes_read);
   if(bytes_read<0)
   {
     if(errno==EINTR)
        bytes_read=0;
     else
        return(-1);
   }
   else if(bytes_read==0)
       break;
    bytes_left-=bytes_read;
    ptr+=bytes_read;
}
return(length-bytes_left);
}
module RegisterTest; reg [7:0] default_value = 8'hAA; // 默认值为 1010_1010 reg [7:0] write_data; // 写入数据 reg [7:0] read_data; // 读取数据 reg reset; // 复位信号 // 实例化被测试的寄存器模块 YourRegisterModule register_inst ( .clk(clk), // 时钟信号 .reset(reset), // 复位信号 .data_in(write_data), // 写入数据信号 .data_out(read_data) // 读取数据信号 ); task write_register; input [7:0] data; begin write_data = data; #10; end endtask task read_register; output reg [7:0] data; begin #10; data = read_data; end endtask initial begin // 步骤一:复位寄存器 reset = 1; #10; reset = 0; #10; // 步骤二:写入并读取默认值 write_register(default_value); read_register(read_data); if (read_data !== default_value) begin $display("Default value mismatch!"); $finish; end // 步骤三:写入并读取 0xFF write_register(8'hFF); read_register(read_data); if (read_data === 8'hFF) begin $display("Write and read match!"); $finish; end // 步骤四:写入并读取 0xAA write_register(8'hAA); read_register(read_data); if (read_data !== 8'hAA) begin $display("Write and read mismatch!"); $finish; end // 步骤五:写入并读取 0x55 write_register(8'h55); read_register(read_data); if (read_data === 8'h55) begin $display("Write and read match!"); $finish; end // 步骤六:写入随机值并读取 write_register($random); read_register(read_data); if (read_data === write_data) begin $display("Write and read match!"); $finish; end $display("All tests passed successfully!"); $finish; // 测试完成,结束仿真 end endmodule
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值