altera FPGA 初始化一片ROM并仿真输出,帮我看看程序有什么问题?仿真结果各种错 15

下面是程序,不知道写的对不对,刚开始学这个,不吝赐教**************************************************moduletes... 下面是程序,不知道写的对不对,刚开始学这个,不吝赐教

**************************************************
module test5(
count,
clk,
rst,
data_out
);
input clk, rst;
output data_out;
output count;
reg [2:0] count;
wire [7:0] data_out;
ip_rom IP_ROM(
.address(count),
.clock(clk),
.q(data_out)
);
always @ (posedge clk or posedge rst)
begin
if(rst)
begin
count <= 0;
end
else
begin
count <= count + 1;
end
end
endmodule

***************************************上面是主程序
`timescale 1 ns/ 1 ps
module test5_vlg_tst();
// constants
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst;
// wires
wire [2:0] count;
wire [7:0] data_out;
// assign statements (if any)
test5 i1 (
// port map - connection between master ports and signals/registers
.clk(clk),
.count(count),
.data_out(data_out),
.rst(rst)
);
initial
begin
rst = 1;
#10 rst = 0;
clk = 1;
end
always

begin
#100 clk = ~clk;
end
endmodule

******************************testbench
展开
 我来答
tigers19890102
2012-07-12 · TA获得超过290个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:99.2万
展开全部
你是指红色的部分吗?
第一:
clk前面的红色是因为你测试文件中initial里面clk=1应该写在#10之前;至于eachvec,你只是定义了没有赋值,而且连初值都没有
第二:
记住所有的寄存器一定要赋初值,如果是altera的话最好在程序真正跑起来之前将寄存器赋值,因为altera应该是不支持代码直接赋初值的
第三:
尽量不要用同步复位,就是reset不要做敏感条件,综合出的硬件资源增加很多
追问

最主要的问题是仿真的结果图有非常大的问题,中间有一小段一小段挤在一起的部分,不知道这是什么问题造成的,我把图放大在截一个图吧。

 

刘金松11
2012-07-14
知道答主
回答量:18
采纳率:0%
帮助的人:10.8万
展开全部
你有没有注意在调用ROM模块时,地址确定后在时钟的第三个上升沿才开始读数据,如果我没看错的话,你应该是确定地址就去读数据了,这样读的的数据是不准确的,你可以看一下rom生成时的一张.JPG文件
更多追问追答
追问
用我的11 没有生成那张图片,数据和地址确实存在着不匹配,这也是一个很严重的问题,不知道应该怎么编程才能让地址和数据匹配呢,能给个例程吗?
追答
把你的邮箱号码给一个吧   我发个例程给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式