R88 发表于 2013-2-19 16:57:49

一个简单的CPLD程序,感觉仿真的波形有问题


程序是个10分频功能,下面是仿真的波形,两条黑线是仿真出来的波形,蓝色是我觉得对的波形,上面的值是count的计数值!仿真的波形明显不对,是在上升沿触发的,但是下面的波形明显不是上升沿切换状态的。
还有在count从1到5的时候,从程序看出来每到一个上升沿会有一个高脉冲啊??不知道对不对啊?

jm2011 发表于 2013-2-19 17:15:02

按你的思路,count应该声明为变量,而不是信号;声明为信号不是立即生效的;

R88 发表于 2013-2-19 18:05:32

jm2011 发表于 2013-2-19 17:15 static/image/common/back.gif
按你的思路,count应该声明为变量,而不是信号;声明为信号不是立即生效的; ...

哦,原来是这么回事,初学还不太懂,那不会立即生效意思就是会有延时,那个延时时间是怎么指定的?我看仿真波形延长时间好像都是相等的。

R88 发表于 2013-2-20 23:12:22

我读程序感觉输出低电平时,每来一个上升沿,会有一个正脉冲啊?如图:

看书上说VHDL是并行执行的,不和mcu一样是按顺序执行,是不是这个原因?

R88 发表于 2013-2-21 14:39:48

{:mad:}{:mad:}

jm2011 发表于 2013-2-21 22:29:47

信号和变量在VHDL中非常重要,建议专门看书系统看看;有点像VERILOG中的<= 和 =的区别;

R88 发表于 2013-2-22 00:35:56

jm2011 发表于 2013-2-21 22:29 static/image/common/back.gif
信号和变量在VHDL中非常重要,建议专门看书系统看看;有点像VERILOG中的

了解了,那3,4楼剩余的问题您能解答一下么?

billwsy 发表于 2013-2-22 00:48:52

q是寄存器输出的吧,当然不会有毛刺了。边沿没有对齐是因为寄存器的tco

R88 发表于 2013-2-22 08:44:08

billwsy 发表于 2013-2-22 00:48 static/image/common/back.gif
q是寄存器输出的吧,当然不会有毛刺了。边沿没有对齐是因为寄存器的tco

q没定义成寄存器,楼主位的程序就是完整的了。tco全称是什么?

billwsy 发表于 2013-2-24 11:33:36

R88 发表于 2013-2-22 08:44 static/image/common/back.gif
q没定义成寄存器,楼主位的程序就是完整的了。tco全称是什么?

你在时序进程里面对q赋值,q就会被综合成一个寄存器了,你可以看看综合后的原理图,就能明白了。记得一般来说VHDL里面的signal是寄存器,variable是组合逻辑。Tco为寄存器传输时间,我猜可能是Time: Clock to Output吧。

billwsy 发表于 2013-2-24 11:35:02

R88 发表于 2013-2-22 08:44 static/image/common/back.gif
q没定义成寄存器,楼主位的程序就是完整的了。tco全称是什么?

还有你是用什么软件仿真的?已经是时序仿真了?你可以先试试功能仿真。

R88 发表于 2013-2-24 12:16:09

billwsy 发表于 2013-2-24 11:35 static/image/common/back.gif
还有你是用什么软件仿真的?已经是时序仿真了?你可以先试试功能仿真。 ...


用quartersII仿真的,q我没有在赋值啊,只是给clk赋值了一个时钟信号

billwsy 发表于 2013-2-24 16:41:42

R88 发表于 2013-2-24 12:16 static/image/common/back.gif
用quartersII仿真的,q我没有在赋值啊,只是给clk赋值了一个时钟信号

我指的是你设计中的q。你用了q<=而不是q=,以及描述了rising_edge(clk),这两项告诉综合器,q是一个触发器,在clk上升沿才会改变,所以不会有毛刺出现。从你上面的截图看,你仿真的模式是Timing,也就是考虑到FPGA内部的资源的非理想型。例如一个信号经过一条线都会产生延时。本例中跳变沿和时钟没有对齐就是因为触发器输出的延时。你选择的时钟频率又比较高,让这个问题看上去很明显。
建议你先去学习一下基本的数字电路知识再来看硬件描述语言。硬件描述语言并不是“执行”的,它只是描述了一个电路的行为,综合器产生了一个电路,和你描述的行为一致。当你对电路没有一点概念的时候,你自然不知道你描述的是什么了。
页: [1]
查看完整版本: 一个简单的CPLD程序,感觉仿真的波形有问题