感谢 知乎龚大佬 打杂大佬 网上几个nice的博客(忘了是哪个了....) 前言 虽然FIFO都有IP可以使用,但理解原理还是自己写一个来得透彻. 什么是FIFO? Fist in first out.先入先出的数据缓存器,没有外部读写地址线,可同时读写. 规则:永远不要写一个已经写满了的fifo. 永远不要读一个读空了的fifo. FIFO种类? 同步FIFO和异步FIFO. 同步FIFO只有一个时钟,也就是说写端和读端的时钟是一毛一样的. 异步FIFO读端和写端两个时钟则是不一样的.包括同频…
参考以下帖子: https://blog.csdn.net/hengzo/article/details/49683707 https://blog.csdn.net/Times_poem/article/details/51917648 https://www.cnblogs.com/aslmer/p/6114216.html https://www.cnblogs.com/ylsm-kb/p/9068449.html https://blog.csdn.net/Pieces_thinking…
1 前言 (1)    什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性. LFSR计算CRC,可以用多项式G(x)表示,G(x) = X16+X12+X5+1模型可如下图所示. (2)    校验原理 其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的…
异步FIFO简介 异步FIFO(First In First Out)可以很好解决多比特数据跨时钟域的数据传输与同步问题.异步FIFO的作用就像一个蓄水池,用于调节上下游水量. FIFO FIFO是一种先进先出的存储结构,其与普通存储器的区别是,FIFO没有读写地址总线,读写简单,但相应缺点是无法控制读写的位置,只能由内部的读写指针自动加,顺序读写数据.FIFO示意图如下: 图1 如图1所示,输入信号有读写时钟.读写复位信号.读写使能信号.写数据:输出信号有空满信号.读数据. 异步时序电路 异步…
这几天看了Clifford E. Cummings的两篇大作<Simulation and Synthesis Techniques for Asynchronous FIFO Design>and <Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons>颇有感想,真可谓经典之作,不可错过. 1.什么是FIFO? FIFO是英文Fi…
异步FIFO总结 异步FIFO的基本概念 异步FIFO读写分别采用相互异步的不同时钟,使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据 FIFO的常见参数 FIFO的宽度:即FIFO一次读写操作的数据位: FIFO的深度:指的是FIFO可以存储多少个N位的数据(如果宽度为N). 满标志:FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出(overflow). 空标志:FIFO已空或将要空时由FIFO的状态电路送出的一…
 一.分析 由于是异步FIFO的设计,读写时钟不一样,在产生读空信号和写满信号时,会涉及到跨时钟域的问题,如何解决? 跨时钟域的问题:由于读指针是属于读时钟域的,写指针是属于写时钟域的,而异步FIFO的读写时钟域不同,是异步的,要是将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,因此我们需要进行同步处理以后仔进行比较 解决方法:加两级寄存器同步 + 格雷码(目的都是消除亚稳态)   1.使用异步信号进行使用的时候,好的设计都会对异步信号进行同步处理,同步一般采用多级D触发器…
jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数据以htpp请求格式拼接成字符串.serialize确实是能够解决一般的提交数据.但是有时我们需要的是一个object对象,而不是字符串(比如jqgrid reload时设置查询条件参数,就需要object对象).方法如下: (function(window, $) { $.fn.serializeJson…
Verilog 语言编写一个 半加器 电路模块 半加器 的电路结构: S = A 异或 B C = A 与 B 1. 程序代码 module h_adder (A, B, SO, CO); input A, B; output SO, CO; assign SO = A ^ B; assign CO = A & B; endmodule 2. 解释程序代码 关键词 module 与 endmodule 就像一个括号({}),任何一个功能模块的描述都必须放在此 "括号" 里面.…
verilog语言简介 verilog语言是一种语法类似于c的语言,但是与c语言也有不同之处,比如: 1.verilog语言是并行的,每个always块都是同时执行,而c语言是顺序执行的 2.verilog又被称作硬件描述语言,在用verilog语言编程的时候,不如说是在用verilog描述一段电路,而c语言则是一段程序 verilog基本语法 本块只讲常用的基本语法,至于一些高级的语法到以后案例的时候会讲到 verilog文件.v基本结构 module a(b, c, d,...z)://mo…