打印
[Actel FPGA]

[求助]关于modelsim仿真问题

[复制链接]
1872|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
6019赵文|  楼主 | 2010-2-23 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

reg TI_buf;
wire TI_posedge;

always@(posedge clk_48m or posedge rst)
begin
if (rst)
    TI_buf<=1'b1;
else
    TI_buf<=TI;
end

assign TI_posedge= TI & (~TI_buf);

TI是串口模块发送完毕产生的中断信号,

这代码里面,TI_posedge表示TI产生了上升沿,按理说跟教程差不多一样,
可是用modelsim仿真时,在workspace界面有很多 管脚信号 跟 内部信号 ,
但是我就找不到TI_posedge,请问问题出在哪里了??
O(∩_∩)O谢谢

(我是综合后仿真的)

相关帖子

沙发
米其林r| | 2010-2-23 21:44 | 只看该作者
如果你把TI_posedge拉到IO端口声明,就看到了

使用特权

评论回复
板凳
年轻不在| | 2010-2-23 21:45 | 只看该作者
你好,你可以在Designer里面看一下综合后的网表图,看是否有三个寄存器来表示这个状态机

使用特权

评论回复
地板
6019实验室| | 2010-2-23 21:46 | 只看该作者
很感谢你一直回复我的问题。

我这里还是有个疑问,

因为这个信号是用来控制一个状态机的,我定义的状态机有3bit(各个状态分别定义为3'b001;3'b010;3'b100),

而仿真时,我只看到状态机其中一bit的信号,

我就想,是不是综合后,因为时序约束的原因,把TI_posedge优化掉了,

导致状态机不能跳转到相应的状态,只能停留在一个状态内??

谢谢!!

使用特权

评论回复
5
6019实验室| | 2010-2-23 21:47 | 只看该作者
刚在那个软件看了一些,还真的没有出现三个位,

而且奇怪的是,我看了TI_posedge信号,它居然被综合成 NOR2门

截了个图,上传不了;



我还定义了另外一个 信号 ps_negedge



reg ps_buf;
wire ps_negedge;

always@(posedge clk_48m or posedge rst)
begin
if (rst)
    ps_buf<=1'b0;
else
    ps_buf<=ps_clk;
end

assign ps_negedge= ~ps_clk & ps_buf;



它被综合成 “or 门”输出了 。



这就比较纳闷了~~~~





状态机的问题就出现在这里了,这期间我在别的资料看到synplify里面有一个Symbolic FSM Complier 工具可以调试状态机了,但是试了很久都没能调用出来;



这两个问题能帮忙解决吗?

谢谢!!!

使用特权

评论回复
6
6019实验室| | 2010-2-23 21:47 | 只看该作者
前段时间我看了《Altera FPGA/CPLD设计(高级篇)》里面一些介绍,能解释一下为什么状态机的从三位变成两位的。

我是用one-hot编码定义状态机的,但是Synplify 在综合时自动对代码进行优化,转换成binary编码形式。

本人也刚学FPGA没多久,可以推荐大家看看这本书,虽然是针对Altere的,但是里面提到的很多代码coding、约束、优化的思想还是通用的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

1515

帖子

1

粉丝