【资源共享】低级错误总结

来源:本站
导读:目前正在解读《【资源共享】低级错误总结》的相关信息,《【资源共享】低级错误总结》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《【资源共享】低级错误总结》的详细说明。
简介:本周思维迟钝,出现好多之前也没太注意的低级错误。这些错误一晃眼还真不容易发现。可能琐事缠身力不从心吧。

1.有关matlab中数据文件.mat类型文件的处理。

在处理.txt文件时,我们常用load函数,或者fopen打开文件后再利用其它函数读取或者处理。可当处理.mat文件时,如果我们同样用load函数读进来,得到的却不是我们之前想的那样是一个数组或者序列,而是一个变量。如:

>> a = load('H_1.mat');

在wokespace中得到的如图:

【资源共享】低级错误总结

可知,得到的a是一个结构变量,并不是我们所期待的是一个矩阵。于是点进去看,双击了a后:

【资源共享】低级错误总结

发现,H出现了,我们所期待的矩阵在这里出现了,点开后就是我们所要的矩阵数据。为什么我们把矩阵数据保存在.txt中load能直接得到结果,而.mat却不行呢?到这里我们明白了,并不是用load得不到我们需要的数据,而是在读取过程中多了一步,多了一个变量。分析后知道:.mat文件中存有一个结构变量,它是用来表示我们所存入的数据,我们存入的数据才是那个H矩阵,而如果是.txt就不一样了,里面直接都是数据,只是load函数按照规则读取里面的数据后按照规则赋值给了矩阵。

如果要读取.mat中数据又不想那么麻烦的话,直接双击文件,或者load('H_1.mat')即可。

2.这个是不注意却又很常识的问题,一不小心就算查半天也很难发现。

在使用QuartusII+ModelSim波形仿真时,几乎每次都是在QuartusII里面修改编写的代码,然后在ModelSim中重新编译再仿真。可当直接在ModelSim中改动代码后再编译、仿真,结果却依然没有改变,仍然不对。于是怎么也想不通,没理由啊……仔细分析代码,再怎么都不会出现和改动前一样的结果……

后来发现,ModelSim中,你改动代码编译时并不会自动保存,不像QuartusII,换句话说,ModelSim在你未手动保存的情况下编译的还是你之前的文件,并没有更新。

3.testbench中的$stop系统函数的使用。

$stop作用相当于设立断点,在testbench中常常用来控制仿真的时间。而我在使用它的时候开始没注意,代码如下:

initial

begin

……

forever

#20 cnt = cnt + 1;

#100;

$stop;

end

当点了Run all以后却一直没有停……自己脑子也不转,就一直看代码,也想不明白,后来在$stop这句设了个断点,发现根本就跑不到这一句,便网上找,才发现里面有个死循环。这个forever一直没关心是因为我的时钟产生也是用的forever:

initial

begin

clock = 1'b0;

forever

#10 clock = ~clock;

end

只是在另一个initial里……这个是根本原因。

总结:习惯很重要,冷静很有效。

提醒:《【资源共享】低级错误总结》最后刷新时间 2024-03-14 01:00:17,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《【资源共享】低级错误总结》该内容的真实性请自行鉴别。