草庐IT

verilog-tutorial

全部标签

【数字IC】从零开始的Verilog SPI设计

从零开始的VerilogSPI协议设计一、写在前面1.1协议标准1.2数字IC组件代码1.3设计要求1.4其他协议解读1.4.1UART协议1.4.2SPI协议1.4.3I2C协议1.4.4AXI协议二、设计思想2.1从设备读写时序(reg_array)2.1.1写时序2.1.2读时序2.2从设备的控制器设计思想(SPI_slave_controller)2.3主设备设计思想2.3.1波特率分频器设计思想(BaudratePrescaler)2.3.2数据发送的控制器(SPI_master_contorller)三、从设备(reg_array)3.1状态机跳变3.2设计文件3.3仿真文件3.4

verilog实例-流水线(Pipeline)

目录1、流水线简介概念MIPS五级流水线简单介绍2、Pipeline的作用3、Pipeline的深度4、流水线中的反压5、流水线中的冲突(a)资源冲突(b)数据冲突4、流水线设计实例(1)流水线加法器(2)并行加法器1、流水线简介概念所谓流水线设计实际上是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组并暂存中间数据。K级的流水线就是从组合逻辑的输入到输出恰好有K个寄存器组(分为K级,每一级都有一个寄存器组),上一级的输出是下一级的输入而又无反馈的电路。流水线本质上可以理解为一种以面积换性能(TradeAreaforPerformance)、以空间换时间(TradeSpace

【【Verilog典型电路设计之log函数的Verilog HDL设计】】

Verilog典型电路设计之log函数的VerilogHDL设计log函数是一种典型的单目计算函数,与其相应的还有指数函数、三角函数等。对于单目计算函数的硬件加速器设计一般两种简单方法:一种是查找表的方式;一种是使用泰勒级数展开成多项式进行近似计算。这两种方式在设计方法和精确度方面有很大的不同。查找表方式是通过存储器进行设计,设计方法简单,其精度需要通过提高存储器深度实现,在集成电路中占用面积大,因此着这种方式通常在精度要求不高的近似计算中使用。泰勒级数展开方式采用乘法器和加法器实现,可以通过增加展开级数提高计算精确度。例:用VerilogHDL设计采用查找表方式的log函数,输入信号位宽4b

21,verilog之宏define介绍

注:学习、交流就在博主的个人weixin公众号 “FPGA动力联盟”留言或直接+博主weixin“fpga_start”私信~宏define提供用一个相对简单的文字来表示一大段真正有意义的文字作用。换句话说,就是综合软件见到定义的宏,就用这个宏代表的文字替代这个宏的位置,这就是一个文字替代的工作。之后,综合软件再按照替代之后的代码来综合出电路。简单而言,宏定义就是起到一个速记员的作用。它不会使代码优化,但会使得代码的规模变小。宏定义的格式是:'definemacro_name(formal_argu_list)macro_text其中:“'define”是宏定义的标志,告诉综合软件这是一个宏定

[SVA知识点一]: System verilog 断言(assert)的基本介绍

断言(SystemVerilogAssertion简称SVA)可以被放在RTL设计或验证平台中,方便在仿真时查看异常情况。一般在数字电路设计中都要加入断言,断言占整个设计的比例应不少于30%。断言通常被称为序列监视器或者序列检验器,是对设计应当如何执行特定行为的描述,是一种嵌入设计检查。如果检查的属性(property)不是我们期望的表现,那么在我们期望事件序列出现异常情况,发生故障时,会产生警告或者错误提示。 目录一、断言的作用二、断言的种类三、并发断言SVA组成一、断言的作用1.检查特定条件或事件序列的出现情况。2.提供功能覆盖二、断言的种类1.立即断言(Immediate Asserti

【读书笔记】Verilog的亚稳态现象和跨时钟域处理方法

书※目:FPGA深度解析_第七章_樊继明著    高级FPGA设计结构、实现和优化_第六章_孟宪元译文章目录一、亚稳态(1)跨时钟域的亚稳态现象(2)亚稳态的多径传输二、跨时钟域处理2.1单bit信号跨时钟域处理(1)单径两级触发器同步器(2)相位控制(3)多径与多级寄存器同步链(4)组合逻辑信号的同步化(5)快时钟域信号的同步化2.2多bit信号的跨时钟域处理(1)异步FIFO(2)双口RAM一、亚稳态(1)跨时钟域的亚稳态现象建立时间:输入信号在时钟上升沿来临之前,应该保持数据稳定的最短时间,否则数据不能被正常采样;保持时间:输入信号在时钟上升沿来临之后,数据保持稳定的时间,否则数据不能被

【数字IC】从零开始的Verilog UART设计

从零开始的UART协议设计一、写在前面1.1协议标准1.2数字IC组件代码二、设计要求三、模块划分四、全局参数五、整体结构六、波特率生成器6.1设计文件6.2仿真文件6.3仿真结果七、发送模块7.1发射模块状态机跳变7.2设计文件7.3仿真文件7.4仿真结果八、接收模块8.1接收模块状态机跳变8.2设计文件8.3仿真文件8.4仿真结果九、TOP模块9.1设计文件9.2仿真文件9.3仿真结果十、本设计与工业级UART的差距十一、其他数字IC基础协议解读11.1UART协议11.2SPI协议11.3I2C协议11.4AXI协议一、写在前面上一节中,我们详细讨论了UART的协议内容并从设计组件的角度

【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)

芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球四社区联合力荐!近500篇数字IC精品文章收录!【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍Verilog奇数分频一、前言二、奇数分频电路题目三、奇数分频电路原理3.1不需要满足50%占空比的分频电路3.2需要满足50%占空比的分频电路四、非50%占空比的三分频电路4.1RTL设计4.2Testbench4.3仿真波形五、50%占空比的奇数分频电路(以三分频为例)5.1RTL设计5.2Testbench5

Verilog中的^~、~^、~&、~|运算符

今天看书上的Verilog代码中,出现了运算符~^,从来没见过,搜了一些资料,记录一下。assignslt_result[0]=(alu_src1[31]&~alu_src2[31])|((alu_src1[31]~^alu_src2[31])&adder_result[31]);结论~^、^~作为二元运算符时,是同或;~^、^~作为一元运算符时,是缩减同或;~&只能作为一元运算符,是对缩减&结果的取反;~|只能作为一元运算符,是对缩减|结果的取反;有没有&~和|~呢?譬如a[2:0]&~b[2:0],这里便不能将&~整体看做一个单独的运算符了,~作为一元操作,优先级最高,先将b[2:0]做按

Verilog基础语法(7)之generate块

目录generateforgenerateifgeneratecaseverilog中的generate块可以称为生成块,所谓生成,可以理解为复制。如果不太好理解,下面我们继续使用generate块。generate块应用的场合通常是对模块进行批量例化,或者有条件的例化,使用参数进行控制对哪些模块进行例化,或者例化多少。不仅限于模块例化,当同一个操作或模块实例需要多次重复,或者某些代码需要根据给定的Verilog参数有条件地包含时,这些语句特别方便。generate块可以分为generatefor和generateif或者generatecase。generatefor介绍generatefo