碎碎念
动动手指,关注公 众号并加星标哦
(1)
在Design sources里面,加的.v文件,都是一个个模块。就如我们在ADS里面设计完一个放大器后,给几个接口,然后就可以形成一个可以被调用的symbol。
在Simulation sources里面,加的.v文件,是用来测试Design sources里面的模块的,就像ADS中的test bench一样,把对应LNA的symbol调出来,给电,给输入,看一个输出。
(2)
always里面的的语句,在时钟沿来的时候,才会工作;而且里面的程序,不管写的先后顺序,都是并行执行。
在时钟沿来之前,数据已经准备好了,然后等到时钟沿来的时候,数据被接收。写这句话的时候,我脑子里面,想的是D触发器,而不是语句。
是不是洗 脑有一丢丢成功了,就像杨博他们说的,看到语句,脑子里就要想到这个语句对应的电路。
(3)
assign里面的语句,只要右边变了,左边立马就变了。就像在电路中,两个网络连在一起了,只不过名称不太一样,一个更新,另一个立马更新。
(4)
说回上文中的疑问,因为我把test_top上面的频率设置的时钟频率设置成100MHz了,所以仿真出来的结果,得到的脉冲间隔是4MHz,而不是计算的4.08MHz。
如果看程序中计算出来的频率控制字的值的话,是对的,但是脉冲间隔就是不对。
问deepseek,他很敬业地给我算了一遍,但是没有解答疑问;折腾几次后,去问了一下gpt,我个人觉得答案还挺靠谱的。
按照他推荐的流程操作了一下,把时钟改成1GHz,然后仿真了一下,结果确实很接近245ns。
(5)
还有程序中的动态位宽的问题,然后test_top中最后一句#10.001,这些,都和AI讨论了一下。虽说吧,还没有太确定的说法,但是也算是在脑子里留了个印象。