数字IC手撕代码-XX公司笔试真题(数据流最大值)
题目描述
已知一段数据流 data 输入,在 datain_ena 为高时有效时,请将这段数据流的最大次大值 选出,在一段 datain_ena 结束之后给出相应的结果 max,submax 和结果使能 dataout_ena。
解题思路
这道题比较简单,比较大小,要注意的就两个点:
① 当输入的datain不超过两个时,dataout_ena不能拉高,只有输入至少两个数时,才有max和submax均有意义。
② 考虑所有可能情况,输入的数据比max大时,将max替换为datain,submax替换为max即可;当输入数据等于max时,将submax数据替换为datain,这样有max=submax(看题意理解,可以可以不这么做);当输入数据小于max但大于等于submax时,将submax替换为datain;当输入数据小于submax时,什么都不做。
代码
testbench
波形

从波形可以看到,输入两个datain之后dataout_ena才会拉高。满足所有考虑的情况。