FPGA:Verilog
游泳冒菜
这个作者很懒,什么都没留下…
展开
-
Verilog-时钟切换电路
输入 sel,clka,clkb,sel 为 1 输出 clka,sel 为 0 输出 clkb。原创 2024-09-10 11:04:10 · 236 阅读 · 0 评论 -
Verilog-频率检测计
参考时钟50Mhz,检测时钟为 1-200Mhz,写出Verilog来。原创 2024-09-10 09:31:16 · 206 阅读 · 0 评论 -
Testbench编写
【代码】Testbench编写。原创 2024-09-01 18:05:50 · 245 阅读 · 0 评论 -
FPGA:异步复位同步释放
①降低了亚稳态的出现概率;②可以使所设计的系统成为100%的同步时序电路,这将大大有利于时序分析,并且综合出来的fmax一般较高;③因为它只有在时钟有效沿到来时才有效,所以可以滤除高于时钟频率的毛刺。①复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务,同时还要考虑clk skew、组合逻辑路径延时、复位延时等因素;②由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以倘若采用同步复位,综合器就会在寄存器的数据输入端口插入组合逻辑,这样会耗费较多的逻辑资源。原创 2024-09-01 16:41:32 · 717 阅读 · 0 评论 -
计数器(2):递增再递减,不断循环
设计一个数x,它先递增10次,然后递减10次,又递增10次,循环反复。原创 2024-08-31 13:54:44 · 231 阅读 · 0 评论 -
Verilog遇到问题总结
8、组合逻辑中,如果en1有效是一种结果,en2有效是一种情况,en1||en2有效又是一种情况,那么en1||en2有效应该写在第一个,否则会导致逻辑错误。10、[ 7:0]a <= 1’b1 << cnt:cnt=0时,a=0000_0001;cnt=1时,a=0000_0010,以此类推。7、如果要表达5< a < 9,直接这样写是错误的,应该写成5 < a && a < 9。12、a<b/2,当b为5时,a为0和1时a<b/2为真。&、|、~是按位符,结果是化为2进制后,再按位进行比较后的结果。原创 2024-08-30 16:18:07 · 187 阅读 · 0 评论 -
Verilog转电路图
Verilog代码描述的是硬件,要明白代码所会生成的电路。原创 2024-08-30 16:04:41 · 141 阅读 · 0 评论 -
数码管动态显示
数码管显示分为静态显示和动态显示。静态显示其实并没有用,和led灯没区别。而动态显示用处很大,基本上数码管的使用都是动态显示。数码管从右到左,一个接一个的亮起熄灭,让其总的速度加快,人眼看上去就像是一直亮着一样。扫描时间间隔建议为20ms以内,人眼才不会感到闪烁。一般来说一位数码管扫描1ms就能得到不错的效果了。附上小梅哥FPGA的HC595模块的代码,可以直接搭配数码管动态显示模块使用,在顶层例化连接一下就行了。第二种数码管动态显示方法:采用直接计数扫描方法。第一种数码管动态显示:采用分频时钟扫描方法。原创 2024-08-30 15:55:06 · 267 阅读 · 0 评论 -
按键消抖-task任务和仿真平台建立
按键抖动原理:按键存在一个反作用弹簧,因此当按下或者松开时均会产生额外的物理抖动,物理抖动会产生电平的抖动。消抖方法:一般情况下,抖动的总时间会持续20ms以内,按下按键后,等20ms过去了再取键值就行了。只对按下侧的抖动进行消除,弹起的就不管了,因为我们使用按键时要的也是按下后的键值。输出为1clk的按键值。下面是编写的仿真代码。由代码可以看到这里使用了task任务,用其定义一个完整的按下弹起的按键过程。在task任务中,模拟抖动时采用了随机数发生函数来产生抖动。原创 2024-08-30 14:32:55 · 142 阅读 · 0 评论 -
任意整数分频
分频电路一般以输入时钟源作为参考,对其进行降频输出;分频可以直接使用锁相环(PLL)时钟资源实现,也可以计数为基础,进行分频设计。本文主要记录后者的相关问题。原创 2024-08-30 09:56:48 · 313 阅读 · 0 评论 -
PWM呼吸灯
【代码】PWM呼吸灯。原创 2024-08-28 18:58:12 · 114 阅读 · 0 评论 -
状态机的Verilog写法
硬件设计很讲究并行设计思想,虽然用Verilog描述的电路大都是并行实现的,但是对于实际的工程应用,往往需要让硬件来实现一些具有一定顺序的工作,这就要用到状态机思想。什么是状态机呢?简单的说,就是通过不同的状态迁移来完成一些特定的顺序逻辑。硬件的并行性决定了用Verilog描述的硬件实现(譬如不同的always语句)都是并行执行的,那么如果希望分多个时间完成一个任务,怎么办?也许可以用多个使能信号来衔接多个不同的模块,但是这样做多少显得繁琐。状态机的提出会大大简化这一工作。——《深入浅出玩转FPGA》原创 2024-08-28 16:23:53 · 990 阅读 · 0 评论 -
计数器:Verilog常用写法
从两个仿真波形可以看到,代码片段法计满之后会进行清0,而开源骚客的方法在计满之后会进行保持。现在对OV5640摄像头进行上电控制,由数据手册得到上电时序图如下所示,现用Verilog实现其波形。可以看到开源骚客写法较为简洁,代码精简很多。源自开源骚客《SDRAM那些事儿》系列教程。[3]开源骚客《SDRAM那些事儿》[1]小梅哥FPGA教程。[2]明德扬FPGA教程。4.2、开源骚客计数器。原创 2024-08-28 14:06:33 · 182 阅读 · 0 评论 -
基本数字电路的Verilog写法
Verilog对电路功能的描述有三种方式:结构化描述、数据流描述、行为级描述。三种描述方式抽象级别不同,各有优缺点,相辅相成,需要配合使用。数据流描述抽象级别较高,不再需要清晰的刻画具体的数字电路,而比较直观的表达底层逻辑。:把一个变量复制多次,组成一个更大位宽的变量;此处有误:输出Y应为1bit,因为输入为8个1bit的数据,输出Y应为选择其中一个进行输出。这些基础数字电路的Verilog描述应该非常熟悉,才能够为后面的学习打下扎实的基础。结构化描述的抽象级别最低,是最接近实际硬件结构的描述方式。原创 2024-08-28 10:38:26 · 611 阅读 · 0 评论