专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
Xilinx VHDL 时序问题怎么解决
2019-03-25 08:51
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
FPGA
8465
9
920
做了一个状态机与一个RAM相连,状态机发3个地址给RAM,通过一个端口先后读进3个数,然后通过3个端口输出。
问题来了,这3个数的值总是一样的或者顺序是乱的。
要不要连个寄存器呢?求高人指点。
[
本帖最后由 dongxh 于 2012-10-26 01:30 编辑
] 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
dongxh
2019-03-26 16:42
谢谢指点,还是有问题。
when S1_FETCH=>
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_i & saddr_k;
ra <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S2_FETCH;
when S2_FETCH=>
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_k & saddr_j;
rb <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S3_ADD;
when S3_ADD=>
rena <= '0';
rwea <= "0";
renb <= '0';
rce <= '1';
ren <= '0';
NEXT_STATE <= S4_FETCH;
when S4_FETCH=>
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_i & saddr_j;
rc <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S5_COMP;
我是通过saddra发给RAM 3个地址。
通过sdoutb接受,并分配给ra,rb,rc这3个端口输出,结果这3个端口的输出都是一样的。
按你的提示我加了10ps的延迟,如下。也就是发完地址等一个时钟周期再接受,可还是不成。
我又改成了40ps,80ps,100ps仍然是错的。
再提个问题,我模拟的时候时钟周期是10ps,是不是有点短,还有怎么选择时钟周期比较好呢?因为我改变时钟周期,输出也会变。
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_i & saddr_k after 10ps;
ra <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S2_FETCH;
加载中...
查看其它9个回答
一周热门
更多
>
相关问题
相关文章
基于FPGA的详细设计流程
0个评论
Xilinx的FPGA开发工具——ISE开发流程
0个评论
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
干货分享,FPGA硬件系统的设计技巧
0个评论
你知道Verilog HDL程序是如何构成的吗
0个评论
一种通过FPGA对AD9558时钟管理芯片进行配置的方法
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
when S1_FETCH=>
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_i & saddr_k;
ra <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S2_FETCH;
when S2_FETCH=>
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_k & saddr_j;
rb <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S3_ADD;
when S3_ADD=>
rena <= '0';
rwea <= "0";
renb <= '0';
rce <= '1';
ren <= '0';
NEXT_STATE <= S4_FETCH;
when S4_FETCH=>
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_i & saddr_j;
rc <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S5_COMP;
我是通过saddra发给RAM 3个地址。
通过sdoutb接受,并分配给ra,rb,rc这3个端口输出,结果这3个端口的输出都是一样的。
按你的提示我加了10ps的延迟,如下。也就是发完地址等一个时钟周期再接受,可还是不成。
我又改成了40ps,80ps,100ps仍然是错的。
再提个问题,我模拟的时候时钟周期是10ps,是不是有点短,还有怎么选择时钟周期比较好呢?因为我改变时钟周期,输出也会变。
rena <= '0';
rwea <= "0";
renb <= '1';
saddrb <= saddr_i & saddr_k after 10ps;
ra <= sdoutb;
rce <= '0';
ren <= '0';
NEXT_STATE <= S2_FETCH;
一周热门 更多>