使用两个与非门构成一个SR锁存器,会有一个警告:The design contains a combinational loop, check the design for unintentional latches 。Breaking the loop at ....--->.......该怎么解决这个warming呢?
已解决! 转到解答。
你要把SR锁存器的clock 至少设置在12MHz。
因为UN的信号频率是cpu 的clock的一半。
附件我放了一个工程,用CY8CKIT-042 测试之后是可以有信号在pin上面测到的。
参考一下 https://www.cypress.com/file/179061/download "4.4 Topic #4: Don’t Make Latches" 一节(从19页开始),最好用Creator 自带的SRFF 或DFF component.
我使用SRFF会出现异步
1.怎么修改这个异步呢
2.如果使用DFF,该怎么改成锁存器latch
建议你读一下 https://www.cypress.com/file/179061/download 针对异步问题 参考23页的 4.7 Topic #7: Interface with Fixed Blocks
用PSoC做数字相关的设计,可以进一步参考这个文档中最后提到的Related Application Notes
很感谢你的回复,对我帮助很大
最后一个问题:
我发现我的计数器存在问题
我想要的效果为,
1.有一个脉冲信号进入计数器,作为开始计数标志(可以用上升或下降沿触发,我使用的引脚为start还是reload)
2.检测到这个上升或下降沿后,时钟clock开始计数(我使用的是down向下计数(向上计数也可以),un最后会有一个溢出信号,配置一个字节8位所以period等于8?)
3.然后检测到下一个start或reload引脚的脉冲后才会下一次计数。所以un处的波形其实是输入波形的一个字节后的延迟
问题:
1.我使用的组件正确吗?我选择了time counter(counter? time counter? time counter pwm?)?
2.我的配置正确吗?
3.clock的输入必须是一个clock block吗?我尝试连接我之前与输入波形同步的clock信号,会提示错误,必须连接一个外部时钟clock才不会报错
4.关于un输出的波形是否和我描述的一样,是输入波形的一个延迟?
问题:
1.我使用的组件正确吗?我选择了time counter(counter? time counter? time counter pwm?)?
正确,Timer counter。
2.我的配置正确吗?
配置正确。
3.clock的输入必须是一个clock block吗?我尝试连接我之前与输入波形同步的clock信号,会提示错误,必须连接一个外部时钟clock才不会报错
不清楚你具体是怎么配置的,我在之前的回复中那样搭建系统可以接受吗?
4.关于un输出的波形是否和我描述的一样,是输入波形的一个延迟?
你的输入波形是什么? 不能理解你这个问题。
underflow (最快最直接的方式是你用示波器测试一下)
When this output goes high, it indicates that a counter underflow has occurred. Not applicable to PWM in
pseudo random mode.
An underflow event indicates that in a down counting mode the COUNTER has changed from a state
where it equaled “0”, to a state where it does not equal “0”.
Timer Counter 结合组建的datasheet和示波器测试一下,你就可以解决问题了。
1.之前回复中的搭建系统方法帮我解决了warming异步的问题,十分感谢。
2.我一直在调试time counter的配置参数,但始终没有出现我想要的波形。
我始终没能获得溢出信号,为什么,会被什么影响了呢?
我不清楚你用的是那一颗芯片,正常情况下UN的信号是不可能route到GPIO的,因为这个地方没有DSI资源来连接数字信号,另外这个信号也只有2 个clock的宽度。
1.我用的芯片是cy8c4245AXI-483
2.如果无法route到GPIO也能接受,因为,我会把之前的输入信号和这个UN输出的信号用SRFF最后输出才得出我想要的波形(或者说SRFF输出q也无法route到GPIO?)
3.根据第二点,其实我最后经过SRFF后的波形才是我想要的,UN两个clock的宽度也没事,对于UN我想要的只是一个电平的跳变(根据本帖上方有一张图片可以看到,PIN_1脚上的波形才是我真正想要的,是前面两个波形经过SRFF后产生的)
4.但我把PIN_1 route到GPIO也看不到我想要的波形,所以我怀疑是我的计数器出现了问题,有什么解决办法吗
好像SRFF的输出q也不能用GPIO来看波形诶,那我该怎么办来验证我的工程的正确性呢,
UN的输出时间是: 2/FCPU (FCPU 是CPU的工作时钟频率)
所以之前给的工程,用1K去同步24M/2 是不对的。你为什么一定要用srff ?
我想要达到的目的是把一个一位长度的低电平信号延长成27个字节长度的低电平信号
所以我用了一个计数器,输入这个一位的低电平信号,计数27个字节,然后输出溢出信号
用SR锁存器锁存这个一位的低电平信号和计数器产生的溢出信号后之后,就能产生我想要的一个延长的低电平信号
我要用这个信号作为SPI片选,前面一位长度的信号当不了片选(长度不够)
你好,
之前的解答对我帮助很大,非常感谢
现在我想问一下:
PWM能不能将3/4bit 改成1/2bit?
我已经把line_n修改成现在这个波形形状了(修改了PWM align和compare),但输出的波形占空比还是有不是50%的情况出现,为什么?
一个问题结束以后,麻烦mark一下正确答案,重新开新的forum问新的问题。
好的
1: SR寄存器是由两个与非门组成的,但是关于为什么不建议自己搭建,在之前回复的文档 page19 页已经给了非常详细的解释。https://www.cypress.com/file/179061/download
2: 对于你直接使用SRFF出现的时间同步的问题,在这个文档的23页也给出了解释。
3: 建议你可以按照下面的图进行分析,看这样的数字逻辑是不是你想要的:
4: Hope it can be helpful for you !
很感谢你的回复,对我帮助很大
最后一个问题:
我发现我的计数器存在问题
我想要的效果为,
1.有一个脉冲信号进入计数器,作为开始计数标志(可以用上升或下降沿触发,我使用的引脚为start还是reload)
2.检测到这个上升或下降沿后,时钟clock开始计数(我使用的是down向下计数(向上计数也可以),un最后会有一个溢出信号,配置一个字节8位所以period等于8?)
3.然后检测到下一个start或reload引脚的脉冲后才会下一次计数。所以un处的波形其实是输入波形的一个字节后的延迟
问题:
1.我使用的组件正确吗?我选择了time counter(counter? time counter? time counter pwm?)?
2.我的配置正确吗?
3.clock的输入必须是一个clock block吗?我尝试连接我之前与输入波形同步的clock信号,会提示错误,必须连接一个外部时钟clock才不会报错
4.关于un输出的波形是否和我描述的一样,是输入波形的一个延迟?
你好,
我现在使用SRFF 然后输出q连到GPIO 上面,但是我的逻辑分析仪却检测不到这个引脚,是SRFF的输出q无法route到GPIO吗?(我使用DFF后能检测到同一引脚的波形,有波形出现)