草庐IT

$verilog

全部标签

快速上手Xilinx DDR3 IP核(3)----把MIG IP核封装成一个FIFO(上)(Native接口)

写在前面        本文将把Xilinx的MIGIP核DDR3的Native接口进行二次封装,将其封装成一个类似FIFO的接口,使其应用起来更加方便简单。        DDR3系列文章:                快速上手XilinxDDR3IP核----汇总篇(直达链接)1、框架    这个类FIFO模块主要由以下几个部分组成:mig_ctrl:顶层模块,使用该模块通过控制MIGIP核间接实现对DDR3芯片的突发写、突发读。分为用户接口与DDR3控制接口,用于只需要控制用户接口即可实现对DDR3芯片的突发写、突发读。用户接口的应用类似FIFO接口,用户只需要提供写使能信号与写入的数

Verilog有符号数与无符号数的相互转化

Verilog有符号数与无符号数的相互转化最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下。问题描述一、正数二、负数1.-1282.-1结论三、延伸总结问题描述把8位有符号数(-128-127)转化为8位无符号数(255-0),转化到255-0是因为该DA模块输入数据越大反而输出电压越小。一、正数比较显然,直接用127减该数就可以。二、负数举两个例子:1.-128-128补码为1000_0000,用127-(-128),计算器计算为:用Verilog写个简单的模块仿真一下:modulesubtraction(inp

Verilog有符号数与无符号数的相互转化

Verilog有符号数与无符号数的相互转化最近在使用DA转换时碰到一个问题,DA芯片输入的数值必须是正的,但输出的数据为有符号数,涉及到一个转化的问题,写一篇博客总结一下。问题描述一、正数二、负数1.-1282.-1结论三、延伸总结问题描述把8位有符号数(-128-127)转化为8位无符号数(255-0),转化到255-0是因为该DA模块输入数据越大反而输出电压越小。一、正数比较显然,直接用127减该数就可以。二、负数举两个例子:1.-128-128补码为1000_0000,用127-(-128),计算器计算为:用Verilog写个简单的模块仿真一下:modulesubtraction(inp

Verilog基本语法之概述(一)

概述Verilog是一种用于数字逻辑电路设计的硬件描述语言,可以用来进行数字电路的仿真验证、时序分析、逻辑综合。既是一种行为级(可用于电路的功能描述)描述语言又是一种结构性(可用于元器件及其之间的连接)描述语言Verilog模块的基本概念模块是Verilog的基本单位,除了编译指令,其他的所有的设计代码都必须放在一个或多个模块中一个模块内部可以使用其他模块,称为实例。上层模块可以引用底层任意层次模块的变量模块内部可以包含若干个“块”Verilog模块总结:Verilog中的标示符可以是任意一组字母、数字、$符号和下划线符号的组合,但标示符的第一个字符必须是字母或者下划线。标示符区分大小写。ve

Verilog基本语法之概述(一)

概述Verilog是一种用于数字逻辑电路设计的硬件描述语言,可以用来进行数字电路的仿真验证、时序分析、逻辑综合。既是一种行为级(可用于电路的功能描述)描述语言又是一种结构性(可用于元器件及其之间的连接)描述语言Verilog模块的基本概念模块是Verilog的基本单位,除了编译指令,其他的所有的设计代码都必须放在一个或多个模块中一个模块内部可以使用其他模块,称为实例。上层模块可以引用底层任意层次模块的变量模块内部可以包含若干个“块”Verilog模块总结:Verilog中的标示符可以是任意一组字母、数字、$符号和下划线符号的组合,但标示符的第一个字符必须是字母或者下划线。标示符区分大小写。ve

FPGA实现千兆/百兆自适应以太网UDP传输

0、前言笔者最近在项目中需要使用到ZYNQ中PL端做以太网UDP传输并且需要支持100M/1000M自适应切换。使用的PHY型号为RTL8211。以下分享的主要为利用已有的1000M协议栈修改为100M并且实现二者自适应切换,IP核主要实现以下功能1、实现100M/1000M自适应2、回环测试PS:完整的IP核文件下载地址:https://download.csdn.net/download/qq_24025329/870194361、软硬件环境和前置条件笔者采用的接口是RGMII接口,即100M模式下单边沿采样,时钟频率为25M。在1000M模式下使用双边沿采样,时钟频率为125M。所以在千

FPGA实现千兆/百兆自适应以太网UDP传输

0、前言笔者最近在项目中需要使用到ZYNQ中PL端做以太网UDP传输并且需要支持100M/1000M自适应切换。使用的PHY型号为RTL8211。以下分享的主要为利用已有的1000M协议栈修改为100M并且实现二者自适应切换,IP核主要实现以下功能1、实现100M/1000M自适应2、回环测试PS:完整的IP核文件下载地址:https://download.csdn.net/download/qq_24025329/870194361、软硬件环境和前置条件笔者采用的接口是RGMII接口,即100M模式下单边沿采样,时钟频率为25M。在1000M模式下使用双边沿采样,时钟频率为125M。所以在千

verilog常见语法记录(一)

RTL例子moduleled( inputwirein1, inputwirein2, inputwiresel, outputregout //输出控制LED灯);//输入只能是wire型变量输出可以是wire型变量也可以是reg型变量//如果输出是在always块中被赋值(即在“//如果输出在assign语句中被赋值(即在“=”的左边)就要用wire型变量always@(*)//always@(sel,in1,in2)//"*"为通配符,表示只要if括号中的条件或赋值号右边的变量发生变化,则立即执行下面的代码//"*"在此always@中等价于“(sel,in1,in2)”写法,使用alw

verilog常见语法记录(一)

RTL例子moduleled( inputwirein1, inputwirein2, inputwiresel, outputregout //输出控制LED灯);//输入只能是wire型变量输出可以是wire型变量也可以是reg型变量//如果输出是在always块中被赋值(即在“//如果输出在assign语句中被赋值(即在“=”的左边)就要用wire型变量always@(*)//always@(sel,in1,in2)//"*"为通配符,表示只要if括号中的条件或赋值号右边的变量发生变化,则立即执行下面的代码//"*"在此always@中等价于“(sel,in1,in2)”写法,使用alw

串口接收模块——verilog实现

1、设计想法原理与之前的串口发送模块一样,1位的起始位和8位的数据位再加上1位的停止位。唯一不同的是在接收的时候要考虑到有干扰的情况下,为了避免干扰,我们对每位数据进行多次采样,按出现概率大的值为该数据位的值。如果按照通常想法在每bits位中间取值的话,bit3位出现图中的干扰很有可能会读出错误的值。所以需要对每位进行多次抽样进行判断。每位要抽8次的话,那需要将每个波特段分成9等分。2、状态机设定3、模块代码`timescale1ns/1ps/////////////////////////////////////////////////////////////////////////////