FPGA
文章平均质量分 88
FPGA学习笔记
你我山巅自相逢*
这个作者很懒,什么都没留下…
展开
-
异步FIFO
异步FIFO 异步FIFO的写时钟和读时钟为异步时钟,FIFO内部的写逻辑和读逻辑的交互需要异步处理,异步FIFO常用于跨时钟域交互。异步FIFO的设计重点有两个,第一个就是跨时钟域的转换及同步;第二个就是状态信号的产生采用相对保守的方式。异步FIFO接口异步 FIFO的输入/输出 ,如下图所示:异步FIFO端口说明:wclk : 该时钟为异步FIFO写操作的工作时钟。w_rst_ : 该信号为异步FIFO的写时钟域复位信号,低电平有效。wren : 该信号为异步FIFO的写使能。fu原创 2022-06-01 17:54:22 · 3097 阅读 · 2 评论 -
同步FIFO
同步FIFO 在同步FIFO中,单一时钟同时用于写入和读取操作。数据流和相关的控制逻辑在同一个时钟域内处理和工作。同步FIFO用于临时存储数据,此时写人和读取操作可以同时发生,也可发生在不同时刻。由于同步FIFO中只使用了一个时钟,其控制逻辑相对于异步FIFO来说简单得多。同步FIFO接口同步 FIFO的输入/输出 ,如下图所示:同步FIFO端口说明:clk : 该时钟为同步FIFO读写操作的工作时钟。rst_n : 该信号为同步FIFO的复位信号,低电平有效。wren : 该信号为原创 2022-05-28 09:47:25 · 3344 阅读 · 3 评论 -
FPGA学习笔记——跨时钟域(CDC)设计之多bit信号同步
FPGA学习笔记——跨时钟域(CDC)设计多bit信号同步 跨时钟域传递多比特信号的问题是,在同步多个信号到一个时钟域时将可能偶发数据变化歪斜(Skew),这种数据歪斜最终会在第二个时钟域的不同时钟上升沿上被采集。即便能够完美地控制和匹配这些多比特信号的走线长度,随着芯片衬底工艺不同,上升和下降的时间也会不一样,这些因素都会产生足够的歪斜导致在精心匹配的多条信号上采样失败。 为了避免这种多比特跨时钟域信号上的采样歪斜,需要掌握一些不一样的方法。这些方法大致可以分为以下几种:多比特信号合并成单比原创 2022-05-24 15:52:53 · 11516 阅读 · 4 评论 -
Verilog学习笔记 ——同步有限状态机
Verilog学习笔记 ——同步有限状态机有限状态机有限状态机可以认为是组合逻辑和寄存器逻辑的特殊组合,他一般包括组合逻辑和寄存器逻辑两个部分,寄存器用于存储状态,组合逻辑用于状态译码和产生输出信号。根据输出信号产生方法不同,状态机可分为两类:摩尔型(Moore)和米里型(Mealy)米里型状态机的输出不但取决于状态还取决于输入,即下一个状态=F(当前状态,输入信号);输出信号=G(当前状态,输入信号),电路结构如下图所示。摩尔型状态机的输出只取决于当前状态,且只在时钟边沿到来时才会有状态变化。原创 2022-04-24 14:36:29 · 3746 阅读 · 0 评论 -
Verilog学习笔记-——运算符
Verilog语法——运算符按功能分包括:算数运算符、逻辑运算符、关系运算符、等式运算符、缩减运算符、条件运算符、位运算符、移位运算符和位拼接运算符。按运算符所带操作数的个数来区分,可分为三类:单目运算符:运算符只带一个操作数。双目运算符:运算符可带两个操作数。三目运算符:运算符可带三个操作数。算数运算符(Arithmetic operators)—双目运算符常用算术运算符包扩:+(加)、-(减)、*(乘)、/(除)、%(求模)逻辑运算符(Logical operators)&&原创 2022-04-08 21:12:38 · 3638 阅读 · 0 评论 -
Verilog学习笔记-——Verilog模块例化
Verilog模块例化在一个模块中引用另一个模块,对其端口进行相关连接,叫做模块例化。模块例化建立了描述的层次。信号端口可以通过位置或名称关联,端口连接也必须遵循一些规则。1. 命名端口连接这种方法将需要例化的模块端口与外部信号按照其名字进行连接,端口顺序随意,可以与引用 module 的声明端口顺序不一致,只要保证端口名字与外部信号匹配即可。下面是例化一次 1bit 全加器的例子:full_adder1 u_adder0( .Ai (a[0]), .Bi (b[原创 2021-09-09 10:03:03 · 15015 阅读 · 1 评论 -
Verilog学习笔记------生成块
Verilog学习笔记------生成块生成语句可以动态地生成Verilog代码。可以对矢量中的多个位以及多个模块的实例引用进行重复操作,可以根据参数确定程序中是否包含Verilog某段代码。生成语句可以控制变量的声明、任务和函数的调用、还能对实例引用进行全面的控制。在编程时,应用关键字generate_endgenerate来说明生成的实例范围。生成实例可以是一下的以下一种或多种类型:1)模块 ;2)用户定语原语 ;3)门级原语 ;4)连续赋值语句;5)initial 和 always 块。原创 2021-09-08 21:47:32 · 796 阅读 · 0 评论