Verilog&FPGA
文章平均质量分 68
随便看看
海绵笨笨
我很懒,还没有添加简介
展开
-
FWFT-FIFO的同步和异步verilog代码
上面是同步FWFT-FIFO的verilog手写代码,这种FIFO的一般用于低延时场景,优点是读使能与读数据是同步输出的,没有时延。上面是异步FWFT-FIFO的verilog代码,这种FIFO的一般用于低延时场景,优点是读使能与读数据是同步输出的,没有时延。以上的两份代码均非原创,原创大佬另有其人。代码片不保证无BUG,只是在这里分享给各位借鉴与使用。原创 2023-12-02 16:42:28 · 1058 阅读 · 0 评论 -
浅析SPI在FPGA中的应用
SPI(Serial Peripheral Interface)接口是一种同步串行通信接口,广泛应用于数字系统中,包括FPGA中。原创 2023-04-07 13:50:20 · 1462 阅读 · 0 评论 -
简易自动售货机控制电路
设计电路有两个投币口(1元和5角),货物2元一件,不设找零。out表示是否提供货物。设计代码`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2020/07/23 11:30:37// Design Name: // Module Name: Test原创 2020-07-24 09:59:02 · 3385 阅读 · 0 评论 -
上升沿和下降沿信号发生器Verilog代码
使用两个状态机,一个只在时钟上升沿工作,另一个只在时钟下降沿工作,两个信号相与后产生输出信号。这个电路没有除时钟和复位以外的其他输入信号。设计代码`timescale 1ns / 1psmodule Test1448(clk,reset,dout);input clk;input reset;output dout;reg [1:0] pr_state1,nx_state1;reg [1:0] pr_state2,nx_state2;reg dout1,dout2;parameter原创 2020-07-23 09:34:41 · 2626 阅读 · 0 评论 -
简易交通灯控制器Verilog
设计一个简单的交通灯控制器,他有5个状态,每个状态都具有可独立编程确定的时间参数(parameter),假设时钟频率为50Hz(如果仿真时间太长可以做适当的比例修改)。路口交通灯示意图设计代码`timescale 1ns / 1psmodule Test1530(clk,reset,red1,yellow1,green1,red2,yellow2,green2);input clk;input reset;output red1,yellow1,green1;reg red1,yello原创 2020-07-23 10:24:50 · 6469 阅读 · 5 评论 -
Verilog 0到99循环计数器
设计一个2位十进制的循环计数器,从0到99,然后再回到0.输出为out0和out1,分别表示十进制数的高位和低位。设计代码`timescale 1ns / 1psmodule Test1030(clk,rst,out0,out1,data);input clk;input rst;output [3:0] out0;output [3:0] out1;output [7:0] data;reg [3:0] out0;reg [3:0] out1;wire [7:0] data;alw原创 2020-07-23 11:25:46 · 9217 阅读 · 1 评论 -
Verilog按比例控制产生随机数
产生0~100之间的随机数,其中小于50的数的比例为80%。`timescale 1ns / 1psmodule Test1533;reg [3:0] range;//reg [9:0] data1;reg [9:0] data;reg big;initial begin repeat(100) begin #10; range={$random}%10; if(range<8) big=1;原创 2020-07-24 09:46:06 · 2136 阅读 · 0 评论 -
Verilog四输入排序电路代码
设计代码`timescale 1ns / 1psmodule Test1342(clk,a,b,c,d,out1,out2,out3,out4);input clk;input [3:0] a,b,c,d;output [3:0] out1,out2,out3,out4;reg [3:0] out1,out2,out3,out4;reg [3:0] temp1,temp2,temp3,temp4;always @(posedge clk)begin{temp1,temp2,temp3,t原创 2020-07-22 16:42:19 · 2184 阅读 · 1 评论 -
Verilog代码BCD计数器
设计代码`timescale 1ns / 1psmodule Test0953(clk,reset,count);input clk;input reset;output [3:0] count;reg [3:0] count;parameter zero=0,one=1,two=2,three=3,four=4,five=5,six=6,seven=7,eight=8,nine=9;reg [3:0] pr_state,nx_state;/////////////////////////原创 2020-07-22 16:50:29 · 2301 阅读 · 2 评论 -
Verilog数码显示器00~99循环计数器电路
采用2位7段数码显示器设计一个00~99循环计数器电路。输入包括一个时钟输入端和一个低电平复位端,复位时输出88,两个输出分别控制高位和低位数码显示器。7位数码管显示器的结构图如下:`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2020/07/24原创 2020-07-24 13:22:38 · 8590 阅读 · 9 评论 -
两输入计算器Verilog代码
设计代码`timescale 1ns / 1psmodule Test1025(a,b,sel,dout);input [7:0] a,b;input [1:0] sel;output [7:0] dout;reg [7:0] dout;always @(sel)case(sel)0:dout=a+b;1:dout=a-b;2:dout=a*b;3:dout=a/b;default: dout=0;endcaseendmodule测试代码`timescale 1ns / 1原创 2020-07-22 16:34:08 · 719 阅读 · 2 评论 -
基于UVM方法的一种数据与参照数据文件对比监控打印System Verilog代码
UVM验证学,SV代码原创 2022-09-24 15:10:08 · 420 阅读 · 0 评论 -
串口模块总结
上图串口传输的时序图。串口传输数据都是一帧数据 11 位。其中第0位为起始位,1-7位为数据位,第九位为校验位,第十位是停止位。在串口的总线上“高电平”是默认的状态,当一帧数据的开始传输必须先拉低电平,这就是第 0 位的作用。第 0 位过后就是 8 个数据位,这八个数据位才是一帧数据中最有意义的东西。最后的两位是校验位和停止位,作用如同命名般一样,基本上是没有重要意义。串口传输还有另一个重要参数就是“波特率”。很多朋友都误解“波特率”是串口传输的传输速度,这样的理解在宏观上是无误。但是在微观上“波特率.原创 2021-04-20 11:26:16 · 3117 阅读 · 0 评论 -
DDR3原理总结
DDR SDRAM 全称为 Double Data Rate SDRAM,中文名为“双倍数据流 SDRAM”。DDR SDRAM 在原有的 SDRAM 的基础上改进而来。也正因为如此,DDR 能够凭借着转产成本优势来打败昔日的对手 RDRAM,成为当今的主流。本文只着重讲 DDR 的原理和 DDR SDRAM 相对于传统 SDRAM(又称 SDR SDRAM)的不同。SDRAM:同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个原创 2021-04-08 10:43:50 · 2765 阅读 · 0 评论 -
Xilinx FPGA开发实用经验学习(二)
1、JTAG电路的原理与设计先说一下JTAG(Joint Test Action Group)。标准的JTAG接口是4线接口,TMS、TCK、TDI以及TDO,分别为模式选择、时钟、数据输入以及输出信号线。JTAG电路的功能模块如下图所示:JTAG接口常用于实现ISP(In-System Programmable),对Flash等器件进行编程。JTAG边界扫描电路又称为Boundary Sean Test(BST),一般采用4线接口(5线接口中有一个接口为主复位信号),也可以通过PC的RS232接口原创 2021-04-05 19:25:13 · 2056 阅读 · 0 评论 -
Xilinx FPGA开发实用经验学习(一)
1、同步RS触发器RS触发器分为同步触发器和异步触发器,二者的区别在于同步触发器有一个时钟端clk,只有在时钟端的信号沿时,触发器的输出才会发生变化。下面是Verilog代码:module sy_rs_ff(clk,r,s,q,qb) input clk,r,s; output q,qb; reg q; assign qb = ~ q; always @ (posedge clk) begin case ({r,s}) 2'b00 : q <= q; 2'b01 : q原创 2021-03-27 20:37:09 · 949 阅读 · 0 评论 -
简单的内部时钟开关LED灯Verilog代码
FPGA的设计中通常使用计数器来计时,对于采用200Mhz的系统时钟,一个时钟周期是5ns,那么表示一秒需要200000000个时钟周期,如果一个时钟周期计数器累加一次,那么计数器从0到199999999正好是200000000个周期,就是1秒的时钟。(时间仅供参考,具体可以根据所需要的时间来修改参数,~~虽然我改的时候发现很困难,并且需要大量的时间~~ )首先需要定义一个32位的定时器,最大可以表示4294967295,十六进制就是FFFFFFFF,如果计数器到最大值,可以表示21.474836475原创 2020-12-04 14:52:15 · 855 阅读 · 0 评论 -
FPGA 串口通信——通用模块
FPGA串口通信前面写的串口通信模块,没有通用性,这里写一个可以通用的串口模块,但凡以后需要串口通信的,就可以直接拿过来用。串口接收模块信号名称I/O位数功能描述clkI1系统时钟50MHzrst_nI1系统复位rs232_txI1串口串行数据发送数据口baud_setI3波特率选择信号data_byteO8并行数据输出rx_doneO1接收1字节数据完成标志代码:UART_Byte_Rx.v//--转载 2020-09-07 13:50:39 · 540 阅读 · 0 评论 -
I2C接口EEPROM实验
本实验通过I2C master控制器去控制I2C接口的EEPROM的读写。代码来源 opencores`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Design Name: // Module Name: I2C_EEPROM// Project Name: ///////////////////////////////////转载 2020-08-20 14:08:26 · 1186 阅读 · 0 评论 -
四位并行乘法器Verilog
上图是4位并行乘法器的电路结构图设计代码`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2020/08/07 13:53:37// Design Name: // Module Name: and_2// Project Name: 定义二输入与.原创 2020-08-07 15:43:20 · 3399 阅读 · 5 评论 -
总线仲裁器电路的设计与验证Verilog
共享总线是一种常见的总线结构,多个总线上的设备拥有共同的地址线和数据线。当-一个总线设备希望占据总线进行数据收发操作时,需要通过属于自己的areq信号向仲裁器发出申请,只有得到仲裁器的许可(对应的agnt置1 )时才能进行数据收发操作,没有得到许可的总线设备不能发起数据操作,否则将会出现多个设备同时驱动总线的错误。下图是有两个总线设备的总线仲裁器电路,areqO 和areq1以及agnt0和agnt1分别是master1和master2的请求和确认信号,rid是仲裁方式选择信号。当多个总线设备同时发出请求时原创 2020-07-29 14:08:32 · 2764 阅读 · 0 评论 -
静态定时分析、时钟域与同步化设计
静态定时分析的基本方法是什么?时钟本身的不理想主要表现在哪些方面,在静态定时分析时是如何处理的?Ans:静态定时分析的基本方法:1、确定延迟路径起点:模块的输入脚、寄存器或触发器的时钟脚。2、确定延迟路径的终点:模块的输出脚、寄存器或触发器的输入引脚。3、任意两个存在直接或间接逻辑连接关系的起点和终点之间都可以构成一条延迟路径,对所有延迟路径的延迟量进行累加,最大延迟路径决定了系统的最高工作时钟频率。不理想主要表现在时钟抖动上,这时候需要将最大时钟抖动参数作为延迟的一部分进行考虑。在AFIFO的原创 2020-07-28 17:03:02 · 219 阅读 · 0 评论 -
二进制转格雷码的Verilog代码
十进制数自然二进制数格雷码000000000100010001200100011300110010401000110501010111601100101701110100810001100910011101101010111111101111101211001010131101101114111010011511111000格雷...原创 2020-07-28 13:25:03 · 838 阅读 · 0 评论 -
Verilog同步FIFO的电路设计
先入先出(FIFO:First In First Out)存储器是一种常用的数据缓冲器件,它没有外部读写地址线,使用起来非常简单,但缺点是只能顺序写入数据,顺序读出数据,其数据读写顺序由内部读写指针自动控制确定。同步FIFO外部连接关系图FIFO内部电路结构图设计代码`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:原创 2020-07-27 14:24:07 · 877 阅读 · 0 评论