请教一个关于inout管脚的问题

2019-03-25 07:42发布

在程序里使用一个分频后的时钟信号CLK(从另一片芯片给过来的),但是使用的时候,在某一特定条件下我要拉高或者拉低这条时钟线,想了一下需要定义CLK为inout信号,才能在程序里对其操作。这样会有几个问题:
1.定义某条件拉高时钟线,如果我的CPLD驱动能力没有前面的芯片强,会不会出现拉不上去的情况;
2.定义某条件拉低时钟线的话,如果正好在CLK的高电平周期,会不会灌到CPLD管脚一个比较大的电流,带来一定的风险;
最后再问一下这样写为什么会出现一个奇怪的仿真结果,低电平的半周期是不定的状态:
assign clk=clk_reg;
assign clk_reg=flag?1:clk_reg; (其中flag是触发信号,clk是时钟信号,clk_reg是中间过渡信号)
希望各位大神给解答一下,现在已经逻辑思维混乱了,多谢!!!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
stickler
1楼-- · 2019-03-25 12:05
 精彩回答 2  元偷偷看……
pouty7447
2楼-- · 2019-03-25 15:24
stickler 发表于 2015-12-18 07:27
前级电路输出的这个时钟信号只驱动你的cpld吗,还是同时驱动其他电路?如果只驱动你的cpld,可以将引脚设置 ...

没有太明白您的意思。在一定条件下我需要拉住这条时钟线(CLK信号),让发出这个时钟的芯片知道我这里出现问题,那么如果我只把CLK设置为输入,如何“拉住”这条线呢?
仙猫
3楼-- · 2019-03-25 16:55
 一般的做法,设置成“inout”属性的引脚应该是处于“out”状态工作的,只是逻辑编程上需要把这个状态再读回来,所以设置成了“inout”。当然也可以不这么做,改写成置“out”属性且再加一个中间变量,不直接读引脚,这样代码稍多了点但概念更清晰。

 但如控制中确实需要“in”和“out”的切换则另当别论,这时应注意避免多个“out”间的冲突,即使发生冲突也应在电路上有所保护。
stickler
4楼-- · 2019-03-25 18:36


前级是什么电路,需要通过把它的输出拉住来通知它出问题了,没有别的方式吗?
pouty7447
5楼-- · 2019-03-25 19:10
仙猫 发表于 2015-12-18 09:09
 一般的做法,设置成“inout”属性的引脚应该是处于“out”状态工作的,只是逻辑编程上需要把这个状态再读 ...

感谢您的说明和提醒,我会注意的。
pouty7447
6楼-- · 2019-03-25 21:50
stickler 发表于 2015-12-18 12:50
前级是什么电路,需要通过把它的输出拉住来通知它出问题了,没有别的方式吗?

前一级是经过隔离的CPU信号,之前想当然的以为驱动很好做,没有预留其他的线路做反馈,现在板子已经做好,没有改版机会,而且驱动没办法进行底层修改,能做的就只有拉住时钟线这一种方式了,哎,说多了都是泪啊

一周热门 更多>