帧发送(读txt输出波形再写入txt)

细节就不说了,直接上代码

module design2(
    input clk,  
    input din,
    input dstate_in,
    output reg dout =0,
    output reg dstate = 0//1的时候是发送数据,其余时候是帧头或者帧尾
    );
always@(posedge clk)begin
    dout<=din;
    dstate<=dstate_in;
end
endmodule

测试文件

`timescale 1ns / 1ps
module tb3;
reg clk;
wire dout;
reg [1-1:0]din=0;
reg  [1-1:0]DataMem[0:8000-1];
reg [13-1:0] AddrMem = 13'd0;//8064
reg [32-1:0] frame_head =  32'h1ACFFC1D;//帧头32位
reg [1-1:0] dstate_in = 1'b0;
design2 nnnnnnnnnnnnnnnnname(
    .clk(clk), 
    .dout(dout),
    .din(din),
    .dstate(dstate),
    .dstate_in(dstate_in)
    );
 integer dout_file1;
initial begin
    clk = 0;
    $readmemh("../../../../SimData/CSV/FrmBin.txt", DataMem);    
    
    dout_file1=$fopen("../../../../SimData/CSV/myFrmBin.txt");    //打开所创建的文件

      if(dout_file1 == 0)begin 
                $display ("can not open the file!");    //创建文件失败,显示can not open the file!
                $stop;
       end  
end

always #1 clk = ~clk;

always @(posedge clk)begin

    if(AddrMem<'d32)begin
        din<=frame_head[31-AddrMem];//不是32减去索引
        AddrMem<=AddrMem+1;
        dstate_in<=0;
    end
    else if(AddrMem<=8000+32) 
    begin
        din<=DataMem[AddrMem-32];
        AddrMem<=AddrMem+1;
        dstate_in<=1;
        if(AddrMem==8000+32)
        begin
            AddrMem <= 0;
        end
    end
end

always @(posedge clk)     
begin
       $fdisplay(dout_file1,"%d",dout);    //保存有符号数据	   
end	
	
endmodule


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值