您的位置:首页 > 编程语言 > MATLAB

Modelsim文件读取问题与matlab文件写入

2016-05-11 15:10 549 查看
reg [15:0] data_mem[3:0];//[1239:0];

initial

begin

$readmemh("ztq1.txt",data_mem); //将sin.txt中的数据读入存储器data_mem

end

reg [11:0] i;

always @(posedge clk or negedge rst_n) begin

if(!rst_n) begin

data_tmp_3 <= 32'd0;

i <= 12'd0;

end

else begin

data_tmp_3[15:0] <= data_mem[i];//[31:0]; //将存储器中的数据输出

i <= i + 12'd1;

end

end

这是一段verilogHDL的testbench代码,用于在Modelsim 中读文件数据。

需要注意,时钟必须是testbench文件中加的时钟,如下,

initial

begin

clk=1;

rst_n=0;

start=0;

#20 rst_n=1;

#200 start=1;

end

always #1 clk=~clk;

如果是模块输出时钟,就会出错,错误情况是,数据是X

readmemh对应十六进制数据

readmemb对应二进制数据

matlab文件写入能用的一段代码

fp = fopen('E:\laow\ztq.txt','wt');

for i=1:1240 %1240不能随便改

%numbin=dec2binPN(real(r(i)),40);

numbin=dec2binPN(real(rm(i)),40);

fprintf(fp, '%s\n', numbin);

end

fclose(fp);

dec2binPN函数:

function [numbin] = dec2binPN(numdec,N)

%判断输入数正负

if (numdec >= 0)

%正数转二进制

numbin1 = dec2bin(numdec,N);

else

%负数转二进制

numbin1 = dec2bin(abs(numdec),N);

l1=length(numbin1);

numbin4=0;

for i=1:l1

if (numbin1(l1-i+1)==num2str(1))%按位取反,用十进制表示

numbin4=numbin4+0;

else

numbin4=numbin4+2^(i-1);

end

end

%末位加1

numbin4=numbin4+1;

%把处理完的十进制数转成二进制,并输出在numbin

numbin5=dec2bin(numbin4);

numbin1=num2str(numbin5,N);

end

numbin=numbin1;

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: