草庐IT

Verilog-A

全部标签

(45)Verilog实现数据位宽转换【8位-32位】

  (45)Verilog实现数据位宽转换【8位-32位】1.1目录1)目录2)FPGA简介3)VerilogHDL简介4)Verilog实现数据位宽转换【8位-32位】5)结语1.2FPGA简介FPGA(FieldProgrammableGateArray)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA设计不是简单的芯片研究,主要是利用FPGA的模式进行其他行业产品的设计。与ASIC不同,FPGA在通信行业的应用比较广泛。通过对全球FPGA产品市

Verilog | 看门狗

一、看门狗简介看门狗:也称看门狗定时器,是常见于系统的一种外设;看门狗似乎就是一条看门的狗,如果系统一切正常则看门狗不叫,如果程序不正常,则看门狗则会将程序咬死(即程序强制复位)。看门狗的作用:当一段程序跑飞,卡死或不受控制时,能使得系统强制重启;喂狗:当看门狗被初始化后,需要在程序中每进行一段时间就重置看门狗模块的定时器计数值,防止程序被咬死;程序咬死:当程序出现问题时(跑飞或锁死),导致看门狗定时器的计数值没能及时重置,当计数值达到设置的阈值后,看门狗定时器则输出复位信号,使得CPU强制复位;二、看门狗分类硬件看门狗:看门狗实际上就是一个计数器,硬件看门狗就是以硬件实现的一种计数器,其可以

Verilog 不完整if-else和case产生锁存latch

文章目录前言一、锁存器latch是什么?二、产生latch的可能情况1.if-else结构缺少else2.case语句分支不全且没有default前言写这篇文章是因为本小白在刷题过程中看到答主的代码总是不把if-else写全,而我又记得不写全是可能产生latch的,对此很迷惑,仔细看过之后发现只有组合逻辑(电平触发)电路中的不完整if-else和case才会产生锁存器latch。简单记录一下。参考文章:1、https://blog.csdn.net/ainu412/article/details/1050819652、https://blog.csdn.net/qq_40696831/arti

Verilog手撕代码(7)数据位宽转换

目录数据位宽转换器宽到窄窄到宽8bitto16bit非整数倍转换8bitto12bit24bitto128bit数据位宽转换器数据位宽转换器,一般常用于模块接口处,比如一个电路模块的输出数据位宽大于另一个模块的输入数据位宽,此时就需要进行数据位宽转换。比如SATA控制器中,内部数据位宽为32bit,但外部物理收发器PHY的接口通常为16bit,或者8bit,在不使用FIFO进行缓存的情况下,可以使用数据位宽转换器,通过时钟倍频在实现数据位宽的转换。宽到窄假设数据从模块A传入到模块B,模块A的输出数据为32位,模块B的输入数据位宽为16位,并把数据从A传入B而不损失数据。假设一个原时钟clk2x

Verilog基本语法之模块以及模块调用详解(2)

模块结构一、模块结构组成 模块由三个元素组成,分别是模块起始、接口说明、逻辑功能描述 1.模块起始:每个模块都要进行端口定义,格式为:module模块名(端口1,端口2,端口3), 2.I/O接口说明:input输出,output输出,inoutput双向接口 3.逻辑功能描述:always、assign等功能描述。二、模块详解 组合成为完整程序如下: module模块名>(端口列表>) I/O接口说明> 内部信号声明> 逻辑功能定义> Endmodule 拿与门、或门举例: moduleAndOR(a,b,c)//模块起 inputa,b;//接口方向为输入 outpu

保姆级超硬核包会,​System Verilog SV接口(interface )

前言:SV中TB的构成主要包括Dut的例化、interface的例化、验证环境的例化三部分。接口类似于一条总线,把零碎的线包装在一起,给那些需要的模块。1.interface1.1interface是干什么的?Verilog通过模块间的端口来完成模块间的通信,SV在Verilog的基础上扩展了接口interface。引入interface可以简化模块儿之间的连接,将一组相关的信号可以封装到一起。interface就像—个"插排",DUT与TB之间的数据驱动关系都可以使用interface这个插排来完成。未使用interface:使用interface:1.2interface概念interfa

基于FPGA的Verilog语言 signed unsigned 运算&&不同位宽运算(无聊的碎碎叨叨)

 此文以quartus为例,使用Verilog语言简单编写验证。并对常见赋值运算进行介绍,读者可采用附带程序进行验证和理解。很神奇的一件事,机器运算仅可以完成最简单的“1+1”,而“1+1”在二进制中可以完成不同bit的加减。他是如何实现的呢?一.最简单的是加法,再加法中不会产生负数,所以直接对应位数相加,加满进一;二.在减法中,机器也是通过加法来实现的,因为在机器中,负数用对应的补码来表示,并不表示负数。1、大数减小数a.(相同位宽减法)例如-8‘d8可以表示为1000_1000,首位表示正负,命名为符号位,1表示负,0表示正。-8的补码为反码1111_0111(反码)加一,即1111_10

【AHB接口协议】固定优先级和轮询仲裁器的Verilog实现

目录一、实验目的1二、实验工具及环境1三、实验内容及步骤11、实验2.1:16位可参数化仲裁器的设计1(1)补码相与法1(2)可变参数设计12、实验2.2:AHB总线仲裁器的设计2(1)设计目标2(2)状态机实现3①状态定义3②增量控制寄存器cnt4③轮询数计数器round4四、实验结论及分析51、实验2.1可变参数仲裁器的仿真验证52、实验2.2AHB总线仲裁器的仿真验证6【附录】61、AHB_Arbiter_FP:62、AHB_Arbiter_RR7一、实验目的学习并掌握基本的AHB总线传输协议;使用VerilogHDL语言对AHB仲裁器模块进行设计,并满足正常的时序要求,体会轮询仲裁相对

数电与Verilog基础知识之同步和异步、同步复位与异步复位

同步和异步是两种不同的处理方式,它们的区别主要在于是否需要等待结果。同步是指一个任务在执行过程中,必须等待上一个任务完成后才能继续执行下一个任务;异步是指一个任务在执行过程中,不需要等待上一个任务完成,可以同时执行多个任务。同步和异步的优缺点取决于具体的应用场景,一般来说,同步更容易理解和实现,但效率较低;异步更难理解和实现,但效率较高。举个例子,假设你要做一道菜,需要先切菜,再炒菜。如果你采用同步的方式,那么你必须先切完所有的菜,然后再开始炒菜;如果你采用异步的方式,那么你可以边切菜边炒菜,或者让别人帮你切菜,你只负责炒菜。显然,在这个例子中,异步的方式更高效,因为它可以利用空闲的时间和资源

推排序 Verilog实现原理

引言推排序常常应用在操作系统的任务调度中,尝试使用硬件对堆排序进行实现,在实现的过程中不使用function和tasks语法,即真·硬件实现参考的博客也就这一个博客有介绍堆排序的Verilog实现原理堆排序还需要复习一遍吗?我肯定是要的菜鸟-堆排序图解排序算法(三)之堆排序可以看到,推排序很复杂,所以我们需要祭出我们的FSM(有限状态机)首先,将整个堆排序分为两个阶段:构建大根堆或小根堆从最后一个节点开始,和根节点交换,并维护大根堆我们这里统一构建大根堆大根堆的构建直接上流程:从第一个非叶子节点开始,读取左右孩子的值;比较大小,确定是否需要交换,以及交换的数据;写入或不写入,如果这个节点是根节