打印

为什么组合逻辑always@(*)敏感信号会被综合器砍掉?(4楼已解决)

[复制链接]
4616|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 changan1216 于 2013-4-22 12:39 编辑

一个对组合逻辑always语句测试的简单代码,如下:
    reg    out;
   always @(ctl)
       out = in;
综合后形成的实际电路结构,以及仿真波形却等效于如下代码:
    wire   out;
assign out = in;
综合后控制变量ctl被优化掉了,实际电路如下:
                              
仿真波形如下:
前仿真:可以实现always @(ctl),敏感信号ctl对语句内代码的触发
后仿真:敏感信号ctl完全不起作用
Quartus+ModelSim / ISE 均是同样结果
求解:组合逻辑always @(<signal>)语句的敏感信号为何会被综合器优化掉?
完全失去代码本来目的.......
不知原因为何如此.求高手解答
源代码如下:
---------设计模块代码-------------------
module t1(in, out, ctl);
    input  in, ctl;
    output out;
   
    reg    out;
    always @(ctl)
        out = in;
   
//    wire   out;
//    assign out = in;
endmodule
----------测试模块代码----------------
`timescale  1ns/1ps
module  t1_tb();
    reg    in, ctl;
    wire   out;
   
    t1 t1_inst(
        .in (in),
        .out(out),
        .ctl(ctl)
    );
   
   initial
    begin
        in = 1;
        ctl = 1;
        #270
        ctl = 0;
    end
   
    always #50 in = ~in;
endmodule

相关帖子

沙发
Backkom80| | 2013-4-22 09:23 | 只看该作者
两者等同

使用特权

评论回复
评论
changan1216 2013-4-22 12:41 回复TA
虽未解决问题,但感谢回复 
板凳
McuPlayer| | 2013-4-22 09:42 | 只看该作者
同步设计,就可以了

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
changan1216 + 1 虽未直接解决问题,但感谢回复
地板
changan1216|  楼主 | 2013-4-22 12:28 | 只看该作者
Backkom80 发表于 2013-4-22 09:23
两者等同

想知道等同的原因......

问题已解决

一直以为always语句必然是可综合的....实际情况有所差异
always语句被综合为实际电路时,尤其是组合逻辑,只会关注always语句内实际代码,而不会关注所谓的敏感信号列表,
最终有效触发信号只和实际综合后形成的最终电路模型有关,因此敏感列表不完整或者多余时,并不影响综合后电路,
仿真差异原因,前仿真执行会通过敏感信号列表触发,才执行内部逻辑,而后仿真则完全按照综合后和实际电路对应的网表文件执行,已经没有所谓的敏感信号了

使用特权

评论回复
5
changan1216|  楼主 | 2013-4-22 12:36 | 只看该作者
McuPlayer 发表于 2013-4-22 09:42
同步设计,就可以了

更改设计很容易解决,可是有违设计初衷........

当初只是想实现通过控制信号变化一次,语句内逻辑实现一次信号传递的目的

这种组合逻辑,硬件是无法实现的,不可综合为电路,貌似除了更改设计,没有好方法了,

如有高手有办法不改设计可以解决,望指点

使用特权

评论回复
6
Backkom80| | 2013-4-22 13:42 | 只看该作者
1,HDL只是语言,他只是一个硬件电路描述语言,
2,综合器是将HDL转换成网表的工具,该工具有差异,
3,想的电路最终是在目标器件FPGA上实现的,这需和目标器件的底层结构想对应,

上面两种不同的HDL的描述方式,经综合器转换成的实质是一样的,所在两者等同,仿真的结果也一样。

always ( ctl )
out = in

assign out = in

使用特权

评论回复
评论
changan1216 2013-4-22 18:51 回复TA
蒽呐~完全正确,今天没分了,就不加了哈~~~这点基础知识还是有的,只是突然发现组合逻辑always语句敏感信号列表综合后居然是被直接砍掉,有点小意外 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

11

帖子

0

粉丝