
寒假爆肝fpga
文章平均质量分 57
薄荷茶哈哈哈
这个作者很懒,什么都没留下…
展开
-
HDLBits之Exams/2014 q3fsm
Consider a finite state machine with inputssandw. Assume that the FSM begins in a reset state calledA, as depicted below. The FSM remains in stateAas long ass= 0, and it moves to stateBwhens= 1. Once in stateBthe FSM examines the value of the...转载 2022-02-24 23:36:31 · 244 阅读 · 0 评论 -
HDLBits之Fsm ps2data
Now that you have a state machine that will identify three-byte messages in a PS/2 byte stream, add a datapath that will also output the 24-bit (3 byte) message whenever a packet is received (out_bytes[23:16] is the first byte, out_bytes[15:8] is the secon原创 2022-02-18 13:58:39 · 588 阅读 · 0 评论 -
FPGA学习交流
1.学习网站https://www.fpga4fun.com/ 最推荐的一个 学习网站2.交流社区https://www.xilinx.com/support.html 首推Xilinx官方的问答社区http://xilinx.eetrend.com/ 电子创新网赛灵思社区 有一些资讯文章,没事的时候可以看看http://bbs.eetop.cn/forum-69-1.html EETOP 比发烧友那些论坛质量要稍微高一点吧3.开源网站https://opencores.转载 2022-02-18 11:16:17 · 246 阅读 · 0 评论 -
HDLBits之Lemmings2
See also:Lemmings1.In addition to walking left and right, Lemmings will fall (and presumably go "aaah!") if the ground disappears underneath them.In addition to walking left and right and changing direction when bumped, whenground=0, the Lemming will..原创 2022-02-17 13:58:12 · 370 阅读 · 0 评论 -
HDLBits之Exams/ece241 2013 q4
Also include an active-high synchronous reset that resets the state machine to a state equivalent to if the water level had been low for a long time (no sensors asserted, and all four outputs asserted).题解:设计一个状态机判断水位并根据水位选择流量开关输入为S(即当前水位)当前状态是S0:输入..原创 2022-02-17 13:12:17 · 976 阅读 · 0 评论 -
23.Verilog知识点(2)
8.过程块任务中不能出现 initial 语句和 always 语句语句, 但任务调用语句可以在 initial 语句和 always 语句中使用。1)过程块有两种:initial 块,只能执行一次always 块,循环执行过程块中有下列部件:过程赋值语句:在描述过程块中的数据流高级结构(循环,条件语句):描述块的功能时序控制:控制块的执行及块中的语句。2)initial语句一个模块中可以有多个 initial 块,它们都是并行运行的。initial 块常用于测试文件和虚拟模块的编转载 2022-02-16 17:48:27 · 3117 阅读 · 0 评论 -
22.Verilog知识点(1)
1.如果 if 语句使用不当, 没有 else,可能会综合出来意想不到的锁存器。在 always 块里面,如果在给定的条件下变量没有被赋值,这个变量将会保持原来的值,也就是说会生成一个锁存器。需要注意的是,这里说的是可能,因此, 不代表没有 else 就一定会出现锁存器,同时,不代表有 else 就一定不会出现锁存器。这个是根据具体设计来看的。避免锁存器同 if else, case 应当加上 default,以避免锁存器出现。注意,如果 case 的情况是完备的,可以不加。(完备意为所有情况都转载 2022-02-16 16:48:59 · 2545 阅读 · 0 评论 -
HDLBits之Exams/2014 q4b
Consider the n-bit shift register circuit shown below:注意:这里的子模块写法不能使用错误代码:module top_module ( input [3:0] SW, input [3:0] KEY, output [3:0] LEDR); // MUXDFF u_1( .clk(KEY[0]), .r(SW[3]), .e(KEY[1]), ...原创 2022-02-16 16:25:17 · 358 阅读 · 0 评论 -
HDLBits之Dualedge
巧思时钟上升沿和下降沿都触发时可以使用寄存器You're familiar with flip-flops that are triggered on the positive edge of the clock, or negative edge of the clock. A dual-edge triggered flip-flop is triggered on both edges of the clock. However, FPGAs don't have dual-edge trigge转载 2022-02-16 13:52:34 · 535 阅读 · 0 评论 -
HDLBits之DFFs and gates
Given the finite state machine circuit as shown, assume that the D flip-flops are initially reset to zero before the machine begins.Build this circuit.错误代码使用非阻塞赋值:Q1Q2Q3未全部到达最后的与非逻辑,所以仿真结果不对。module top_module ( input clk, input x, outpu...原创 2022-02-16 10:25:14 · 710 阅读 · 3 评论 -
HDLbits之Mt2015 muxdff
Assume that you want to implement hierarchical Verilog code for this circuit, using three instantiations of a submodule that has a flip-flop and multiplexer in it. Write a Verilog module (containing one flip-flop and multiplexer) named top_module for this原创 2022-02-16 09:48:23 · 1629 阅读 · 6 评论 -
21.设计描述方式
1.设计描述方式:概述: verilog 通常可以使用三种不同的方式描述模块实现的逻辑功能: 结构化、数据流、行为描述方式1)结构化描述方式:是使用实例化低层次模块的方法,即调用其他已经定义过的低层次模块对整个电路的功能进行描述,或者直接调用 Verilog 内部预先定义的基本门级元件描述电路的结构。2)数据流描述方式: 是使用连续赋值语句(assign)对电路的逻辑功能进行描述,该方式特别便于对组合逻辑电路建模。3)行为级描述方式: 是使用过程块语句结构(always)和比较抽象的高级程序语句转载 2022-02-15 15:53:19 · 627 阅读 · 0 评论 -
20.功耗问题、波形X问题
1.一般分为静态功耗和动态功耗动态功耗: 发生在门开关(或状态翻转)的瞬间。是由于对电容充电和电源和地之间短暂电流通路造成的。 它正比于开关频率。静态功耗: 总是存在, 是由电源和地之间的静态导通电流(或漏电流)引起的。2.降低动态功耗:1、降低内核供电电压。降低供电电压会影响到时序性能。为了弥补这个影响,一般采用流水线(pipelining)和并行(parallelism)设计方法来提高设计性能。当然,这样同时也会增加设计面积。2、降低电容负载和逻辑开关频率。3.波形X问题X 和 Z,所转载 2022-02-15 15:44:29 · 378 阅读 · 0 评论 -
19.BRAM/DRAM
1.Block RAM(BRAM)Block ram 由一定数量固定大小的存储块构成的,使用 BLOCK RAM 资源不占用额外的逻辑资源,并且速度快。 但是使用的时候消耗的 BLOCK RAM 资源是其块大小的整数倍。如 Xilinx公司的结构中每个 BRAM 有 36Kbit 的容量,既可以作为一个 36Kbit 的存储器使用,也可以拆分为两个独立的 18Kbit 存储器使用。反过来相邻两个 BRAM 可以结合起来实现 72Kbit 存储器,而且不消耗额外的逻辑资源。Block RAM 都有两套转载 2022-02-15 15:13:08 · 778 阅读 · 0 评论 -
18.门控时钟
引用b站大佬rong晔手册1.使用门控时钟的原因:减少时钟网络的功耗消耗,最直接的办法就是如果不需要时钟的时候,就把时钟关掉。2.门控时钟的结构:1)与门门控这种直接将控制 EN 信号和时钟 CLK 进行与操作完成门控的方式,可以完成 EN 为 0 时,时钟被关掉。产生问题:毛刺产生原因:如上图所示, EN 是不受控制的,随时可能跳变,这样纯组合输出 GCLK 就完全可能会有毛产生。时钟信号上产生毛刺是很危险的。实际中,这种直接与门的方式基本不会被采样。所转载 2022-02-15 14:38:58 · 6152 阅读 · 5 评论 -
HDLBits之卡诺图
A single-output digital system with four inputs (a,b,c,d) generates a logic-1 when 2, 7, or 15 appears on the inputs, and a logic-0 when 0, 1, 4, 5, 6, 9, 10, 13, or 14 appears. The input conditions for the numbers 3, 8, 11, and 12 never occur in this syst原创 2022-02-15 11:14:34 · 315 阅读 · 0 评论 -
HDLBits之BCDadd4
You are provided with a BCD (binary-coded decimal) one-digit adder named bcd_fadd that adds two BCD digits and carry-in, and produces a sum and carry-out.module bcd_fadd { input [3:0] a, input [3:0] b, input cin, output cout, o原创 2022-02-14 21:34:19 · 1712 阅读 · 0 评论 -
HDLbits之signed additional flow
Assume that you have two 8-bit 2's complement numbers, a[7:0] and b[7:0]. These numbers are added to produce s[7:0]. Also compute whether a (signed) overflow has occurred.知识点:判断有符号数是否溢出[方法一]Xf、Yf分别两个数的符号位,Zf为运算结果符号位。当Xf =Yf =0(两数同为正),而Zf=1(结果为负)时,负溢出转载 2022-02-15 14:18:47 · 151 阅读 · 0 评论 -
HDLBits之More Verilog Features
1.Conditional ternary operator利用条件判断进行赋值Given four unsigned numbers, find the minimum. Unsigned numbers can be compared with standard comparison operators (a < b). Use the conditional operator to make two-way min circuits, then compose a few of them原创 2022-02-14 19:07:03 · 286 阅读 · 0 评论 -
17.乒乓buffer
引用b站大佬rong晔手册1.概念乒乓 buffer 是由两个单口 sram 背靠背组成的一种电路结构,假设我们称其为 s1 和 s2。则乒乓 buffer 的工作方式如下。1) 首先向 s1 中写入数据,此时 s2 是空的,因此没有操作。2) 当向 s1 写入完毕,通过逻辑操作,使得接下来向 s2 中写入数据,于此同时其他模块可以从 s1 中读出已经写入的数据;3) 待 s2 中写完,再次转换,重新向 s1 中写入数据,同时其他模块从 s2 中读出数据。4) 由于这个过程中两个 buffer转载 2022-02-12 12:47:09 · 3942 阅读 · 1 评论 -
16.逻辑
引用b站大佬rong晔手册1.逻辑电平: 12V, 5V, 3.3V。TTL 和 CMOS 不可以直接互连,由于 TTL 是在 0.3-3.6V 之间,而 CMOS 则是有在 12V 的有在 5V 的。CMOS 输出接到 TTL 是可以直接互连。 TTL 接到 CMOS 需要在输出端口加一上拉电阻接到 5V 或者 12V。用 CMOS 可直接驱动 TTL;加上拉电阻后,TTL 可驱动 CMOS。2.逻辑最小项:在一个有 n 个变量的逻辑函数中,包括全部 n 个变量的乘积项(每个变量必须而转载 2022-02-12 12:38:06 · 223 阅读 · 0 评论 -
15.静态、动态时序分析
1.静态时序分析(static timing analysis, STA) 是遍历电路存在的所有时序路径,根据给定工作条件(PVT)下的时序库.lib 文件计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足约束要求, 根据最大路径延时和最小路径延时找出违背时序约束的错误。2.静态时序分析优点:1) 不需要给输入激励;2) 几乎能找到所有的关键路径(critical path);3) 运行速度快;3.静态时序分析缺点:1) 只适用同步电路;2) 无法验证电路的功能;3) 需转载 2022-02-12 11:08:00 · 2779 阅读 · 0 评论 -
14.时序约束
引用b站大佬rong晔手册1.时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。 通过附加时序约束可以综合布线工具调整映射和布局布线, 使设计达到时序要求。2.附加时序约束策略:先附加全局约束,然后对快速和慢速例外路径附加专门约束。1)附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对 FPGA/CPLD 输入输出 PAD 附加偏移约束、对全组合逻辑的PAD TO PAD 路径附加约束。2)附加专门约束时,首先约束分组之间的路径,然后约转载 2022-02-12 10:56:32 · 2691 阅读 · 0 评论 -
13.速度优化
引用b站大佬rong晔手册1.速度优化包括:FPGA 的结构特性、HDL 综合器性能、系统电路特性、 PCB 制版情况等,也包括 Verilog 的编程风格。2.电路结构方面的速度优化方法:1)流水线设计流水线(Pipelining)是一种在复杂组合逻辑之间添加寄存器的方法,是最常用的速度优化技术之一。它能显著地提高设计电路的运行速度上限。2)寄存器配平 (Register Balancing)寄存器配平是使较长路径缩短,较短路径加长,使其达到平衡从而提高工作频率的一种技术。若设计中转载 2022-02-12 10:48:01 · 1265 阅读 · 0 评论 -
12.面积优化
引用b站大佬rong晔手册1.面积优化的意义:1)可使用规模更小的可编程器件,降低系统成本,提高性价比。2)当耗用资源过多时会严重影响时序性能。3)为后续技术升级留下更多的可编程资源。4)资源耗用太多会使器件功耗显著上升。2.优化方法:1)资源共享:针对数据通路中耗费逻辑资源较多的模块,通过选择、复用的方式共享使用该模块,达到减少资源使用、优化面积的目的。高级的 HDL 综合器,如 QuartusII 和 Synplify Pro 等,通过设置能自动识别设计中需要资源共享的逻辑结构转载 2022-02-12 10:40:03 · 1793 阅读 · 0 评论 -
各类通信协议
各类通信协议笔记原创 2022-02-11 20:41:17 · 98 阅读 · 0 评论 -
11.锁相环、锁存器、寄存器
引用b站大佬rong晔手册PLL 的英文全称是 Phase Locked Loop,即锁相环,是一种反馈控制电路。锁相环作为一种反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。 实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。...转载 2022-02-11 15:52:00 · 1181 阅读 · 0 评论 -
10.关键路径
引用b站大佬rong晔手册关键路径通常是指同步逻辑电路中,组合逻辑时延最大的路径(这里我认为还需要加上布线的延迟),也就是说关键路径是对设计性能起决定性影响的时序路径。对关键路径进行时序优化,可以直接提高设计性能。对同步逻辑来说,常用的时序优化方法包括 Pipeline、 Retiming、逻辑复制、加法/乘法树、关键信号后移、消除优先级等解决。静态时序分析能够找出逻辑电路的关键路径。优化方法:1. 组合逻辑中插入寄存器(插入流水线)组合逻辑的延时过长,就会成为关键路径,这时可以考虑在转载 2022-02-11 15:47:41 · 1537 阅读 · 0 评论 -
9.系统工作频率
引用b站大佬rong晔的手册1.系统最高运行速度:Tco ——触发器的输入数据被时钟打入到触发器到数据到达触发器输出端的延时时间;Tdelay——组合逻辑的延时;Tsetup ——D触发器的建立时间。最小的时钟周期 Tmin =Tco+ Tdelay+ Tsetup,即最快的时钟频率 Fmax=1/Tmin。2.举例最小的时钟周期为 Tmin = tClk-Q(A) + tpd(F) + ts(B) = 10+5+ 2=17 ns最大时钟频率为fmax = 1/Tmin = 5转载 2022-02-11 15:07:48 · 1270 阅读 · 0 评论 -
8.状态机
引用b站大佬rong晔手册Moore 型状态机: 输出只由当前状态决定,即次态=f(现状,输入),输出=f(现状);Mealy 型状态机: 输出不但与当前状态有关,还与当前输入值有关,即次态=f(现状,输入),输出=f(现状,输入);一段式:整个状态机写到一个 always 模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;二段式:用两个 always 模块来描述状态机,其中一个 always 模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出转载 2022-02-11 14:31:54 · 254 阅读 · 0 评论 -
7.跨时钟域处理
格雷码的值只需要在原来的二进制的基础上右移一位再加上原来的二进制值即可得到。连续的格雷码之间只有单比特信号变化,多用在异步时钟域处理上,如异步FIFO中地址指针的索引就采用格雷码编码。...转载 2022-02-11 11:51:03 · 1234 阅读 · 0 评论 -
5.同步与异步,FIFO
1.同步复位和异步复位的区别:同步复位是复位信号随时钟边沿触发有效。异步复位是复位信号有效和时钟无关。2.同步逻辑和异步逻辑的区别:同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系3.同步电路和异步电路区别:同步电路有统一的时钟源,经过PLL分频后的时钟驱动的模块,因为是一个统一的时钟源驱动,所以还是同步电路。异步电路没有统一的时钟源。跨时钟域处理...转载 2022-02-11 10:15:05 · 2291 阅读 · 0 评论 -
4.竞争/冒险
引用b站大佬rong晔手册1.竞争/冒险产生原因:信号经过逻辑门电路都需要一定的时间,由于不同路径上门的级数不同,信号经过不同路径传输的时间不同,或者门的级数相同但各个门延迟时间有差异,也会造成传输时间不同。竞争与冒险是逻辑门因输入端的竞争而导致输出产生不应有的尖峰干扰脉冲(又称过渡干扰脉冲)的现象。在门电路中,两个输入信号同时向两个相反方向的逻辑状态转换,称为竞争。由于竞争而在电路的输出端可能产生尖峰脉冲的现象称为冒险。竞争不一定会产生冒险,但冒险就一定有竞争。2.消除竞争/冒险转载 2022-02-10 14:47:24 · 10670 阅读 · 0 评论 -
3.时序/组合逻辑
引用b站大佬rong晔的手册1.建立时间与保持时间建立时间Tsu:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间。保持时间Th:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的最小时间。2.时序逻辑:其特点为任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。 电路里面有存储元件(各类触发器,在 FPGA 芯片结构中只有 D 触发器)用于记忆信息,从电路行为上讲,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时,才有可能使输出发生变化。转载 2022-02-10 10:22:42 · 415 阅读 · 0 评论 -
2.时钟那些事儿
部分概念引用自b站大佬rong晔资料rong晔 _ 搜索结果_哔哩哔哩_Bilibili1.时间抖动(jitter):时钟周期在不同的周期可能加长或缩短,平均值为0,但两个时钟周期存在差值。原因:误差在时钟发生器内部产生,与晶振、PLL内部电路有关。解决方法:只能在设计中留有余量。2.3.偏移(skew):时钟相位不确定。原因:时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了 skew。解决方法:完成布局布线后,物理路径延时是固定的,所以在设原创 2022-02-10 10:09:48 · 801 阅读 · 0 评论 -
1.FPGA内部资源
fpga初步认识转载 2022-02-10 09:19:31 · 4801 阅读 · 0 评论