接着玩Tang Mega 138K开发板

今天接着玩Tang Mega 138K开发板。由于昨天怎么也调不出来片内逻辑分析仪, 我今天决定用前天调好的千兆以太网MAC, 把出错的内存地址和错误的数据通过网口输出出来。经过数次尝试, 我发现前14次写入的数据都正常, 但是第15次实际写入的数据变成了我第16次要写入的数据。考虑到我的写入命令是一个接一个的, 只要内存控制器速度跟得上, 我的状态机中间不会产生气泡, 于是, 我怀疑是不是写入数据通道有个大小为16的FIFO, 然后由于什么原因丢了一拍数据。经过查看示例代码, 我发现它传给DDR3内存控制器IP核的握手信号的valid (cmd_en、wr_data_en)信号是与(&)过IP核输出的ready (cmd_ready、wr_data_rdy)信号的, 这十分怪异, 难以理解。根据我的记忆, valid信号应当是主动产生的, 而ready信号才允许依赖于valid信号。总之, 在我把valid信号也与上ready信号之后, 所有测试都通过了。

此外, 我这几天所使用的测试代码已经公开在了https://github.com/twd2/tang-mega-138k-pro-tests, 欢迎品尝。

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/18280QrCode