verilog手撕
叶大叔的小车车
这个作者很懒,什么都没留下…
展开
-
同步fifo(异步fifo)
重点在于空满状态判断。两种方法1.计数法。2套圈法,读写指针多设置一位。最高位用来指示套圈情况。原创 2024-06-27 19:33:47 · 389 阅读 · 0 评论 -
边沿检测(缓存一下数据前后比对就ok)
可以缓存一次或者缓存两次。关键弄清楚缓存的数值是。原创 2024-06-27 18:20:25 · 310 阅读 · 0 评论 -
状态机思考(序列检测代码)
若要是使用case (ccurrent_Sta),则只有使用组合逻辑,就相当于第二段和第三段都使用了组合逻辑,其实就相当于是两段式状态机了。所以可能即使组合逻辑和时序逻辑输出结果一致的场合,可能还是按照时序逻辑写法较好。三段式代码容易维护,时序逻辑的输出解决了两段式组合逻辑的毛刺问题,但是从资源消耗的角度上看,三段式的资源消耗多一些。其中第三个always block中采用时序逻辑,且使用case(Nex_Sta)来判断输出条件,是因为使用的是。2..三段式状态机,在使用时序逻辑的前提下,状态判断使用。原创 2024-06-27 14:28:48 · 832 阅读 · 0 评论 -
串并转换代码
串转并的使用环境非常多,在接口处用到最多,在某些模块的输入仅允许串行输入时,而总线上的数时并行的,那就需要通过串并转换,把并行的数据转换成串行的数据,包括在输出的时候,需要把串行的数据转换成并行的数据,才能送到总线中,使用方法都是用一个计数器来计数实现。目前我接触到的就是uart协议中有串并转换。uart模块中传输的就是串行数据,从apb等总线拿到的数据要进行串并转换一下。原创 2024-06-26 22:32:45 · 287 阅读 · 0 评论 -
RAM(牛客上题目)
enb=1的时候是写,addr就是写地址,enb=0的时候读,addr就是读地址。因为深度是128,所以我们定义的深度是128bit, 宽度是4bit. 建立一个reg的数组,将数据存储进来为了更好表示,我们使用reg [3:0] ram_reg[127:0]表示。这个初始化不能用 ram_reg原创 2024-06-21 21:20:42 · 159 阅读 · 0 评论 -
任意奇数分频(50%占空比)-计数法
后会使得新的结果还是 2N-1 分频,但是高电平周期变为 N-1+1/2,低电平周期变为 N-1/2,从而高低电平持续时间相等,实现50%占空比的任意奇数分频器。任何奇数 2N-1 分频都可以表示由 N-1个高电平周期和 N个低电平周期组成。若高电平周期少一个周期,在后面。采样的分频器——div2,在相同 cnt 判断切换高低电平的条件下,就一定有 div1 领先(或滞后)于 div2 半个参考周期,这样他们。N个高电平周期和 N-1个低电平周期组成。若高电平周期多一个周期在后面。verilog:或操作。原创 2024-06-21 20:26:01 · 324 阅读 · 0 评论 -
时钟分频-任意偶数分频-计数方式
任意偶数分频(50%占空比),采用计数的方式。关键点:上升沿计数到N/2-1处时钟翻转一下(因为是从0开始计数)。例如8分频:计数到4个上升沿翻转一次。0>1>2>3。cnt计数到3时候就是计数到4个上升沿了。verilogModelsim仿真波形正确:原创 2024-06-21 19:04:32 · 199 阅读 · 0 评论 -
异步复位,同步释放
优点:有利于仿真器仿真;确保电路100%同步,有利于时序分析;复位只发生在时钟有效沿,可以过滤掉高于时钟频率的毛刺。缺点:复位信号必须长于一个时钟周期;大多数厂商只有异步复位端口,同步复位需插入组合逻辑,耗费资源。缺点:复位信号释放时,若恰恰在时钟沿附件,亚稳态;复位信号容易受到毛刺影响。优点:无需额外的组合逻辑,节约资源;原创 2024-06-21 17:55:16 · 177 阅读 · 0 评论