TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
两个28MHz分频到1秒的分频程序对比 6 t5 Q9 t" x2 u% p; c8 B( Y* B
, M6 Q& l* p- O7 l 两个程序,一个是直接用REG时序进程单进程写的分频程序把28兆个周期分成14兆个和14兆个,其中一半输出0,另一半输出1,正好1秒。仿真结果很好,无竞争,无毛刺,下载DEII验证正常,用它来驱动16进制计数器现实也正常。) W0 `5 s7 w8 [: h) e6 H0 d$ D
另外一个程序是把REG单进程分为两个进程,一个是REG进程,另一个是COM进程,设计思路如前,仿真结果是这样,当输入频率为2的幂级数时,无毛刺无竞争,但是输入频率非2的幂级数时,就会在1秒的0和1各0.5秒内产生一个正向和反向毛刺,下载DEII开发板,显示也是正常,1秒1秒的闪烁,但是用它来驱动16进制计数器,发现问题,就是计数不是一个一个的计,会显示0,4,8,C,F,0这样,很有规律。仔细研究波形仿真,发现了这个问题。就是多加的那个COM进程产生毛刺,正好多了那两个毛刺,计数才0完就计4。
! q9 n F9 o- q0 T8 c. r9 f j VHDL状态机时也会有这个问题,多进程状态机会出现毛刺,要消除,就是因为COM进程存在。把COM进程和REG进程合并,写成混合进程REGCOM就可以消除毛刺了,这就是单进程状态机的优势。5 p, n Y% M- t3 C8 F, V
) H4 t0 E7 A; x3 F9 g
两个程序里大家可以修改输入频率的大小,由于仿真时间过久,建议大家选用256Hz和280Hz进行仿真,就可以看到偶发的那三个波形了。可以看出单进程不论输入256还是280Hz都不会有毛刺,而双进程输入256Hz很好,无毛刺,但是输入280Hz时,就会出现毛刺,这就是我说的提供给16进制计数器做时钟出现计数0,4,8,C,F,0的原因了。
* E; ^) G# m Z# V& h2 p一点建议,仅供大家参考。希望有所帮助。
) O* ~8 J* m5 R( L2 R; D7 x7 O+ _
, @+ I9 C9 l, M' E& v. _ |
|