求教两个简单问题,关于香农定理和verilog

毅通客服1   2010-1-30 19:34 楼主
1. 根据香农定理,3000Hz的电话线,信噪比35dB,可以得到调制解调器的极限是34880bps,那56kmodem是怎么回事?现在的ADSL的modem和以前的modem有什么本质区别?通过提高那部分使得速率可以达到1Mbps甚至8Mbps?

2. always @ (posedge CLK or posedge SET or negedge CLR)
           begin
              if(SET)
                      q=1'b1;
              else  if(!CLR)
                      q=1'b0;
              else
                       q=d;
           end
     这个CLR是在按下的时候才为0是吗?如果不是这样就不对了,如果按下为1,松开为0,那么!CLR为真,那就一直执行q=1'b0了。SET和CLR有什么区别呢?干吗一个上升沿,一个下降沿,最终效果有什么不同?

回复评论 (9)

一个上升沿和一个下降沿 是为了实现的 电平的跳变的检测,保证检测到下降沿的,同时也可以检测到上升沿

即实现所有沿的检测。

香农定理那个问题,不懂,帮顶下

MARK.
点赞  2010-1-31 19:07
引用: 引用 1 楼 kyzf 的回复:
一个上升沿和一个下降沿 是为了实现的 电平的跳变的检测,保证检测到下降沿的,同时也可以检测到上升沿

即实现所有沿的检测。

香农定理那个问题,不懂,帮顶下

MARK.


有点看不懂,CLK和SET都是下降沿,按照你这么说不该冲突了么?

我是觉得当SET的下降沿触发该段代码,SET按钮肯定是要被按下的,然后要执行if(SET)的分支,所以按下SET按钮时,SET必须=1才行,是这样吗? 可我怎么觉得有点不合常理?因为:由0变1,是上升沿啊,不是下降沿触发。到处是矛盾,我哪里想错了?
点赞  2010-1-31 22:26
这个进程看不明白啊,多个信号的边沿驱动,为什么要这么写啊?
点赞  2010-2-1 00:30
香农定理的问题,首先电话线只有3KHz是不对的,电话线实际上带宽比3KHz大得多,普通电话只用了3K而已。ADSL实际上用的是高频段。带宽大了,根据香农定理自然数据传输的最大速度也就大了。

第二题,搞复杂了。CLR是不是个下降沿有效信号,另外实际设计中很少用到这种寄存器。
点赞  2010-2-1 11:20
谁给来个 正确的?或者标准的,并解释一下
下降沿或者上升沿的触发条件,以及代码的执行逻辑。
点赞  2010-2-11 00:10
根据程序SET是置位信号,当它为1时q置1;CLR是清零信号,当它为0时q置0;
posedge CLK or posedge SET or negedge CLR只是always块的触发条件,当其中任一条件满足时就执行always里的语句;
CLR和实际的物理操作没有关系,只看信号波形就可以了
点赞  2010-2-21 19:36
我也是一个菜鸟!

  这程序,不大符合规范,会导致逻辑不是很稳定,异步电路问题多,很难用。

always @ (posedge CLK or posedge SET or negedge CLR)  
      /*这是触发条件,只要其中一个条件满足,就会进入程序主体 ,set的上升沿和clk的上升沿的作用是一致的。否则,q的值维持原值*/
          begin
              if(SET)    /*这些语句,是在触发条件满足的时刻,此时set,clr信号的电平值,才会决定q的赋值*/
                      q=1'b1;
              else  if(!CLR)
                      q=1'b0;
              else
                      q=d;
          end
点赞  2010-2-22 09:59
引用: 引用 7 楼 jyh1238 的回复:
我也是一个菜鸟!

? 这程序,不大符合规范,会导致逻辑不是很稳定,异步电路问题多,很难用。

always @ (posedge CLK or posedge SET or negedge CLR)?
? ? ? /*这是触发条件,只要其中一个条件满足,就会进入程序主体 ,set的上升沿和clk的上升沿的作用是一致的。否则,q的值维持原值*/
? ? ? ? ? begin
? ? ? ? ? ? ? if(SET)? ? /*这些语句,是在触发条件满足的时刻,此时set,clr信号的电平值,才会决定q的赋值*/
? ? ? ? ? ? ? ? ? ? ? q=1'b1;
? ? ? ? ? ? ? else? if(!CLR)
? ? ? ? ? ? ? ? ? ? ? q=1'b0;
? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? q=d;
? ? ? ? ? end



我是在说: CLR只要不按下去,就一直是0。那么 if(!CLR)成立,q=1'b0这个分支就会被一直执行了啊,程序逻辑显然是不对的。
点赞  2010-2-24 12:56
引用: 引用 6 楼 sdfvg 的回复:
根据程序SET是置位信号,当它为1时q置1;CLR是清零信号,当它为0时q置0;
posedge CLK or posedge SET or negedge CLR只是always块的触发条件,当其中任一条件满足时就执行always里的语句;
CLR和实际的物理操作没有关系,只看信号波形就可以了


这么说我就懂了。。。谢谢老哥!
点赞  2010-2-24 12:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复