Verilog设计实例
文章平均质量分 80
QNee
这个作者很懒,什么都没留下…
展开
-
边沿检测原理及其实现(双边、同步、异步)
一、边沿检测原理1、边检测原理(同步)上升沿就是从0到1变化的过程,而同步边沿检测就是使用一个基准时钟,来检测另外一个信号的上升沿。这种检测方法适用于被检测信号的最大频率小于基准时钟的频率。如上图,当第一个时钟上升沿来到,检测到输入信号为低0,下一个上升沿来到检测到高1,则检测到上升沿。下降沿同理如上图,当第一个时钟上升沿来到,检测到输入信号为高1,下一个上升沿来到检测到低0,则检测到下降沿。如果被检测信号的最大频率大于基准时钟的频率就会发生如下的问题,可能会检测不到如上图,当第一个时钟原创 2020-08-16 11:35:08 · 8452 阅读 · 4 评论 -
数字电子技术基础(八):超前进位加法器
在上篇文章,介绍了串行进位加法器:数字电子技术基础(七):加法器这种加法器在运算过程中,所花费的时间比较长。假设4位串行进位加法器,一共需要4个1位全加器。如上图,s1的进位输入是s0的进位输出,相当于是等到第一个加法器运算完成,第二个加法器才开始工作,等到第二个加法器运算完成,第三个加法器才开始运算,一直等到第四个加法器运算完成。假设每个加法器运算需要的时间为a,则s0的输出需要a;s1的输出需要2a;s2的输出需要3a;s3的输出需要4a;co的输出需要4a。当等待4a的时间后,4位串行进位加原创 2020-08-16 01:32:39 · 10406 阅读 · 0 评论 -
序列检测器原理及其实现(单次检测及目标序列计数)
序列检测序列检测主要功能是:将一个指定的序列从数字码流中识别出来,当然也可以实现对指定序列的计数。序列检测的工具是状态机。输出只和状态有关,而与输入无关,称为Moore状态机;输出不仅和状态有关而且和输入有关系,称为Mealy状态机在进行序列检测之前,需要我们画出状态转换表或者状态转换图。本次假设我们需要检测 110010我们画出以下状态表S0为空闲状态x为下个输入这样我们就可以利用状态机写出代码可看到,我们在最后有个S6的下一个状态没写,S6的下个状态写什么可以实现不一样的功能。原创 2020-08-14 17:09:28 · 15875 阅读 · 0 评论 -
n位串行进位全加器
// 一位半加器module h_adder( input A, // 被加数 input B, // 加数 output S, // 和数 output CO // 进位 ); assign CO = A & B; assign S = A ^ B; endmodule// 一位全加器module f_adder( ain, bin, cin, cout, sum);input wi原创 2020-08-14 16:21:32 · 1553 阅读 · 0 评论 -
利用D触发器的输入输出延迟实现二倍频电路
在电路中,触发器的输入与输出是有一个延迟的,并不是上升沿一来,输出端马上输出数据,这是由于触发器内部电路决定的。就算是最简单的非门,输入与输出也有延迟,更别说复杂的电路了。如果我们是理想情况下,没有任何延迟,那我们就不能利用延迟设计二倍频。而功能(行为)仿真就是基于理想情况,信号在电路中传输没有任何延迟所以本次设计是在时序仿真下实现的选择的芯片型号是 Altera(Intel)公司的 cyclone 4 系列EP4CE10F17C8使用modelsim进行时序仿真原时钟周期20ns可原创 2020-08-13 12:17:53 · 12635 阅读 · 2 评论 -
小数分频之任意小数分频(二)(占空比50%,时钟抖动较小)
这是上一篇文章的继续,是改进版,上一篇文章地址:小数分频之任意小数分频(一)(占空比50%)这次因为这个代码还有些局限,不完善,所以就不放了,如果有需要的,可以留言直接放仿真图仿真的clk_in 周期都为20ns一、奇数分频次数大于等于偶数分频次数(奇数个数除以偶数个数大于等于2,占空比才是50%,否则有一个周期的占空比会有一点问题。)1、(53/10)1、(35/13)二、偶数分频次数大于奇数分频次数(需要等待稳定再使用,第一个上升沿不能用,要从第二个上升沿开始算起)1、(24原创 2020-08-11 14:44:26 · 2372 阅读 · 3 评论 -
小数分频之任意小数分频(一)(占空比50%)
写在前面(重要,必读):本次设计只是提供一个任意小数分频的思路,最后设计出来的并不适用于对时序要求很高的设计,也基本上不适用于工程。 在小数分频中,如果只是使用FPGA逻辑资源 (即输入时钟clk_in,计数器,线网资源),不使用包括PLL锁相环等在内的外部资源和其他用于分频的外部电路,那么最终设计一定不可能得到占空比为50%的时钟,并且如果是任意小数,不是N.5分频的话,最终得到的时钟抖动都很大,就是高电平持续时间不一样,低电平持续时间也不一样。 比如说,要设计一个5.3分频的时钟,假设源时钟周期原创 2020-08-11 09:26:16 · 12127 阅读 · 1 评论 -
小数分频之N.5分频原理及其实现(占空比非常接近0.5)
写在前面(重要):(本次设计只适用于对占空比要求不是很严格的设计,设计出来的时钟 高低电平之比为N:N+1或者N+1:N 本人觉得这已经算是0.5分频的极限了) 设计小数分频时,假如不使用外部资源,只是用FPGA内部逻辑资源(即只有一个输入时钟clk_in以及一些计数器和线网,不使用锁相环),最后设计出来的输出时钟clk_out不可能达到真正的占空比为50%。如果用锁相环倍频的话,那假如设计一个输入时钟clk_in的3.5分频。使用2倍频的话,其实就相当于设计的是clk_in 2倍频之后的7分频原创 2020-08-09 11:02:41 · 2733 阅读 · 1 评论 -
异步FIFO原理及其实现
FPGA(一):异步FIFO实现(包含源码和仿真文件)一、异步FIFO的重要参数及其作用1、FIFO:First Input First Output,即先入先出队列,本质是RAM。FIFO有几个最重要的参数:2、wr_clk:写时钟,所有与写有关的操作都是基于写时钟;3、rd_clk:读时钟,所有与读有关的操作都是基于读时钟;4、FIFO_WIDTH: FIFO的位宽,即FIFO中每个地址对应的数据的位宽;5、FIFO_DEPTH: FIFO的深度,即FIFO中能存入多少个(位宽为FIFO_原创 2020-08-07 22:38:56 · 9120 阅读 · 8 评论