这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 如何用VHDL或Verilog最简洁地描述出一种逻辑功能(详见正文)

共41条 1/5 1 2 3 4 5 ›| 跳转至

如何用VHDL或Verilog最简洁地描述出一种逻辑功能(详见正文)

工程师
2009-10-31 16:38:50     打赏
我想实现如下的逻辑功能:
     如果a产生了一个时钟周期的脉冲,那么b则输出一个长达2或3个时钟周期的脉冲(即产生一个脉冲展宽的信号)
     要求不能用计数器实现(我感觉用计数器来描述代码还是有点多,我想应该有更简洁的描述)



关键词: 何用     Verilog     简洁     描述     一种     逻辑     功能    

菜鸟
2009-10-31 18:46:27     打赏
2楼
你的意思差不多就是分频了,用D触发器可以搭出来。这方面的资料网上很多的,搜一下就可以了

高工
2009-10-31 19:41:59     打赏
3楼
D触发器就算是计数器了。
不用计数器的话,还真有些难。想想先

工程师
2009-10-31 19:45:50     打赏
4楼

谢谢!
其实不是分频。a不是一个时钟信号,而是一个单脉冲信号,正脉宽为一个时钟周期。这个信号产生后,我希望输出一个新的单脉冲信号b,b的正脉宽为2到3个时钟周期。


工程师
2009-10-31 19:51:13     打赏
5楼

逻辑图(时钟信号未画出)

工程师
2009-10-31 20:03:33     打赏
6楼
其实我并不是非计数器不能用,只是感觉常规的计数器描述代码太繁(要加计数进程和定义计数变量等)。我想使用更简洁的实现代码,用类似计数器的思想也是可以的,比如用寄存器打一拍对a进行延时,再用个或门实现。
总之目标是代码要短、额外定义的变量或信号要少(这可能很难两全,呵呵)。一人技短,二人技长,故发帖出来讨论讨论。我编程方面的经验是很少的,希望得到各位大牛的指教~~

高工
2009-11-01 10:29:13     打赏
7楼
becoll能再说清楚一些吗?
信号a与系统时钟间的关系?a的脉宽是几个时钟?a是同步的,还是异步的?

不同的情况,要考虑的内容不同。

工程师
2009-11-01 14:58:54     打赏
8楼
a是同步的,脉宽为一个时钟周期

高工
2009-11-01 16:36:11     打赏
9楼

对于“a是同步的”的理解是:假设是上升沿同步,当用时钟对a锁存时,锁存到的是a的上一个状态值。

基本思路,用CLK下降沿对a做半个时钟延迟得到a_halfdelay,用CLK上升沿对a做一个时钟延迟得到a_onedelay,对a、a_onedelay、a_halfdelay相或即可得到b信号

程序如下:

always @( posedge CLK )
      a_onedelay <= a;

always @( negedge  CLK )
      a_halfdelay <= a;

b = a | a_onedelay | a_halfdelay;

预计的波形如下(未仿真)

——回复可见内容——


如果这种方法有什么不正确或不合理之处,欢迎指出。如果还有什么方法,也可以一起讨论


菜鸟
2009-11-01 21:57:16     打赏
10楼

仿真结果,b信号还是有点勉强


共41条 1/5 1 2 3 4 5 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]