草庐IT

二、8【FPGA】Verilog中锁存器(Latch)原理、危害及避免

前言学习说明此文档为本人的学习笔记,对一下资料进行总结,并添加了自己的理解。一、基本概念        如果拿到了数字电路技术基础的书,翻开书本的目录你会发现,关于锁存器的章节与内容非常少,也就是在触发器前面有一小节进行了简单说明。但是真的就这么简单么?答案是否定的。        在组合逻辑电路与时序逻辑电路中间夹了一章触发器,而触发器作为了时序逻辑电路的基本构成单元,而锁存器是构成触发器的基本结构(却不是时序逻辑电路的构成单元),但是锁存器又是通过组合电路得来的(锁存器严格来说属于组合逻辑电路)。上面那个问题的答案解释呼之欲出,锁存器不就是组合逻辑电路与时序电路的桥梁么?人们发现了锁存器才

一起学习用Verilog在FPGA上实现CNN----(三)激活层设计

1激活层设计LeNet-5网络的激活函数是双曲正切函数(TanH),项目中tanh函数模块由完整的层UsingTheTanh构成,该层由较小的处理单元HyperBolicTangent组成1.1HyperBolicTangent处理单元HyperBolicTangent,对每个输入执行Tanh操作,原理图如图所示,输入为位宽16的数,输出位宽也是16。该单元将Tanh运算分为3个乘法操作和1个加法操作:首先,得到x项的增量项,即x^2然后,将当前x项与下一项相乘然后,将每个相应的最终x项与其系数相乘最后,将每个结果项与前一项相加1.2UsingTheTanhUsingTheTanh是Tanh层

FPGA实现AD采集

1理论学习(废话篇)  ADC模拟数字转换器(额谈到这个,真的很荣幸在ADI实习的时光,打住不扯了),凡是涉及到模拟信号转数字信号的时候,都会用到ADC。  ADC的种类很多,有积分型,逐次比较型,SAR型等等,各有各的优势和缺点,一般根据实际项目来选择ADC型号。ADC有一个很重要的参数就是位宽,什么8位,12位,16位。这其实就是ADC的分辨率,最小能分辨的输入电压大小。假设ADC的位宽是8位,参考电压为5V,最小分辨率为:1/256*5v=0.0195mv。2实战参考FPGA高速ADC接口实战——250MSPS采样率ADC94812.1ADC硬件特性分析(瞎抄的)  首先必须通过data

FPGA设计的10点小知识

文章目录概述1、数字系统1012、时钟3、好的状态机设计 Moore状态机/Mealy状态机有什么问题?格雷码不能解决问题吗?一个更好的状态机设计4、同步输入和状态机的复位5、非法状态--状态机的灾难6、跨时钟域设计同步101单点信息切换交换7、锁存器8、竞争 9、可测试性把大位宽计数器分成多个小位宽计数器异步反馈路径是犯罪10、别过分依赖仿真器时钟同步异步逻辑正确的设计正确的检验总结概述    主要参考PeterChambers的《TheTenCommandmentsofExcellentDesign》。        同步数字系统在当今的设计中无处不在。工程师们为每一个可能的应用创造同步电

数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(2)2021 华为海思(上)

引言        最近收到诸多粉丝的来信,要求出一版《数字IC设计、FPGA设计秋招笔试题精讲》,于是,通过几天几夜的加班加点,终于出了这一版《2021华为海思秋招笔试题目、答案、解析》,以后每隔7天就会出好几套卷,助各位数字IC设计者斩获大厂的高薪Offer!!!    PS:纯题目的PDF版本可联系博主获取~单选题1、影响芯片成本的主要因素是DieSize和封装,但电源、时钟等因素,特别是功耗对解决方案的成本影响较大,因此低成本设计需要兼顾低功耗设计:()A.错误B.正确正确答案:B详细解析:题目里已经说明了,“影响芯片成本的主要因素是DieSize和封装”,那么封装成本和什么有关呢,当

基于FPGA+SDRAM+BT656视频解码移植总结

一、硬件准备1、TVP5150模块(模拟视频信号解码模块)。2、模拟摄像头一个(PAL或NT格式输出AV同轴)3、FPGA开发板一块(EP4CE6+SDRAM+VGA)实现功能:模拟摄像头输出的视频信号为模拟信号,AV同轴线缆输出,通过转接线接到TVP5150模块,FPGA控制TVP5150模块,通过SDRAM缓存视频数据。FPGA解码BT656数据。FPGA控制VGA输出视频数据。1TVP5150原理图接口 TVP5150模块框图(参考数据手册) FPGA仅需要9根信号线即可控制PCLK、D0-D7(根据数据手册提供参考) 2FPGA+SDRAM+VGA本次选用的是开发板(核心板+底板结构)

FPGA学习——verilog捕捉信号上升沿下降沿

在FPGA使用中,常常需要进行信号的边沿检测,如在串口通信中,需要检测接收信号的下降沿来判断串口的的起始位。常用的方法就是:设计两个一位的寄存器,用来接收被检测的信号,系统时钟来一次记一次输入信号,如果用了两个寄存器直接异或就可以了;使用高频的时钟对信号进行采样,因此要实现上升沿检测,时钟频率至少要在信号最高频率的2倍以上,否则就可能出现漏检测。代码如下:moduleedge_detect(sys_clk,rst_n,signal,pos_edge,neg_edge,both_edge);inputsys_clk;//系统时钟inputrst_n;//复位信号inputsignal;//待检测

FPGA入门学习笔记(十)Vivado设计状态机实现UART多字节数据发送

目录任务要求仿真波形设计文件程序Method_OneMethod_Two仿真文件程序任务_板级验证结果任务要求使用串口发送5个字节数据到电脑1、ADC采样的结果为12位,如何使用串口发送2、16位数据,如何通过串口发送3、多个字节的数据,如何通过串口发送UART规定,发送的数据位只能有6、7、8位,若直接修改发送位数,接收模块将不适配。两种情况:1、没有开始发送(上一次的发送已经完成,新的40位数据的发送请求没有出现)2、40位数据的发送请求信号已出现3、依次发送数据中状态:等待传输请求(Trans_Go);Data产生Send_Go,启动发送第一个字节;接着等待Tx_Done;判断Data4

【FPGA】:ip核----cordic

文章目录一、概述二、端口说明三、ip核的生成四、示例五、参考资料一、概述cordic核主要用来求三角方程,主要功能为:rotate旋转——复数旋转translate变换——复数转极坐标sin/cosarctansinh/cosharctanhsquareroot平方根二、端口说明备注:s_axis_代表核作为丛机,m_axis代表核作为主机,数据宽度一般为8的整数倍三、ip核的生成(1)在ipcatalog里面选择cordic(2)配置configurationcompensationScaling:补偿因子,当选择不补偿时他的输出是乘了倍数Z的,如下所示:因此,为了让结果为z,

FPGA自学笔记(二)仿真文件tb

FPGA自学笔记(二)仿真文件tb一、创建文件创建simulationsources,命名为tb_模块名。二、代码1、定义reg,wire因为要测试一个模块,所以该模块的input应该在测试文件中被赋值,只有reg类型可以被赋值。该模块的output应该在测试文件中被作为连线连接到下一个模块,或者作为下一个模块的输入,所以一能改被定义为wire类型。代码如下(被测试模块):moduleled_twinkle(inputsys_clk,//系统时钟inputsys_rst_n,//系统复位,低电平有效output[1:0]led//LED灯);代码如下(tb文件):moduletb_led_tw