
LIZHI
FPGA 的例子
傻童:CPU
业精于勤,荒于嬉;行成于思,毁于随。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
将一个信号同步到clk中的通式
将一个信号同步到clk中的通式module register_diff_clk( input clk, input rst_n, input in_a, output out_b ); reg[1:0] temp;always @(posedge clk or negedge rst_n) if(!rst_n) temp <= 2'b00; else temp <= {temp[0],in_a};assign out_b = temp[1]原创 2021-11-19 09:38:23 · 303 阅读 · 0 评论 -
LM75温度测试
LM75温度测试原创 2021-11-17 14:56:46 · 856 阅读 · 0 评论 -
基于I2C协议的EEPROM驱动控制
基于I2C协议的EEPROM驱动控制原创 2021-11-01 11:42:43 · 288 阅读 · 0 评论 -
SPI-Flash页写实验
SPI-Flash页写实验`timescale 1ns / 1psmodule flash_pp_ctrl( input wire sys_clk,//系统时钟,频率50MHZ input wire sys_rst_n,//复位信号,低电平有效 input wire key,//按键输入信号 output reg cs_n,//片选信号 output reg sck,//串行时钟原创 2021-10-29 14:32:10 · 379 阅读 · 0 评论 -
基于SPI协议的Flash全擦除
基于SPI协议的Flash驱动控制原创 2021-10-28 16:03:12 · 555 阅读 · 0 评论 -
基于sobel算法的边缘检测设计与实现
基于sobel算法的边缘检测设计与实现边缘是图像的基本特征。边缘检测针对的是灰度图像,目的是标识数字图像中灰度变化明显的点。边缘检测的方法大致可以分为两类:基于查找的一类,通过寻找图像一阶导数中最大值和最小值来检测边界。基于零穿越的一类,通过寻找图像二阶导数零穿越来寻找边界。实验目标:使用 Matlab 软件将图片转换为灰度图像, 并且将灰度图像的高 3 位取出存放为 txt 文本 , PC 机通过串口 RS232 传输图片数据给 FPGA, FPGA 通过 Sobel 算法检测出图片的边缘轮廓原创 2021-10-27 16:39:48 · 471 阅读 · 0 评论 -
FIFO求和实验
FIFO求和实验实验目标:使用 Matlab 生成一个*.txt 文件,文件中包含模拟求和的数据, PC 机通过串口 RS232 将数据传给 FPGA,使用双 fifo 实现三行数据的 FIFO 求和,通过串口 RS232将求和后的数据回传给 PC 机,并通过串口助手打印出求和数据。实验要求: *.txt 文件包含 2500 个数据,为 0-49 的 50 次循环,模拟 50x50 数组。fid=fopen('fifo_data.txt','w+');for i =1:50 for j =原创 2021-10-26 11:30:07 · 452 阅读 · 0 评论 -
TFT_LCD液晶屏驱动设计与验证
TFT_LCD液晶屏驱动设计与验证注:在本实验工程中,输出信号中包含 HV 同步模式下需要的行、场同步信号(hsync、 vsync)和 DE 同步模式下的 tft_de 信号,各信号正确输出。读者若想要使用 HV 同步模式进行图像显示,可在代码中注释掉 tft_de 信号;若想要使用 DE 同步模式进行图像显示,可带代码中注释掉行、场同步信号。`timescale 1ns / 1psmodule tft_ctrl( input wire tft_clk_9m,//输入时钟,频率9M原创 2021-10-25 20:37:33 · 971 阅读 · 0 评论 -
HDMI显示器驱动设计与验证
HDMI显示器驱动设计与验证HDMI组成HMDI数据传输图TMDS信号连接图原创 2021-10-25 15:42:05 · 293 阅读 · 0 评论 -
VGA彩条显示
VGA彩条显示(1) 系统上电后,板卡传入系统时钟(sys_clk)和复位信号(sys_rst_n)到顶层模块;(2) 系统时钟由顶层模块传入时钟生成模块(clk_gen),分频产生 VGA 工作时钟(vga_clk),作为图像数据生成模块(vga_pic)和 VGA 时序控制模块(vga_ctrl)的工作时钟;(3) 图像数据生成模块以 VGA 时序控制模块传入的像素点坐标(pix_x,pix_y)为约束条件,生成待显示彩条图像的色彩信息(pix_data);(4) 图像数据生成模块生成的彩条原创 2021-10-23 20:17:56 · 635 阅读 · 0 评论 -
复杂的状态机
复杂的状态机多输入,多输出型的状态机`timescale 1ns/1nsmodule complex_fsm( input wire sys_clk , //系统时钟50MHz input wire sys_rst_n , //全局复位 input wire pi_money_one , //投币1元 input wire pi_money_half , //投币0.5原创 2021-10-19 11:41:48 · 679 阅读 · 0 评论 -
简单的状态机
简单的状态机`timescale 1ns/1nsmodule simple_fsm( input wire sys_clk , //系统时钟50MHz input wire sys_rst_n , //全局复位 input wire pi_money , //投币方式可以为:不投币(0)、投1元(1) output reg po_cola //po_cola为1时出可乐,po_原创 2021-10-19 11:10:42 · 197 阅读 · 0 评论 -
按键消抖实验
按键消抖实验`timescale 1ns / 1psmodule key_filter#( parameter CNT_MAX = 20'd999_999 //计数器计数最大值)( input wire sys_clk,//系统时钟50MHZ input wire sys_rst_n,//全局复位 input wire key_in,//按键输入信号 output reg key_flag //key_flag为1时表示消抖后检测到按键被按下原创 2021-10-19 09:52:57 · 396 阅读 · 0 评论 -
FPGA设计的基础流程
FPGA设计的基础流程养成一个好的设计思维方式还是很重要的!原创 2021-10-18 09:40:44 · 190 阅读 · 0 评论 -
灰度图像采集显示
灰度图像采集显示在FPGA内部,采集到的视频数据线通过一个FIFO,将原本与25MHZ时钟同步的数据流转换到FPGA内部50MHZ的时钟。接着将这个数据再送入写DDR3缓存的异步FIFO中,这个FIFO中的数据一旦达到一定数量,就会被写入DDR3中。于此同时,使用另一异步FIFO缓存从DDR3读出的图像数据;LCD驱动模块不断地发出读图像数据请求给到这个FIFO,从中读取图像数据并送给VGA显示器进行实时图像的显示。...原创 2021-10-03 09:40:39 · 408 阅读 · 0 评论 -
FIFO IP设计说明
FIFO IP设计说明FIFO的3作用实现不同时域的切换。对数据进行缓存,写入是慢时钟域的零散数据,读出是快时钟域的成块数据。数据位宽的转换先选择IP Catalog选项,然后搜索FIFO Generator,点击就行。在接口类型(Interface Type)栏,选择Native单选按钮在FIFO实现(FIFO Implementation)下拉列表中,选择Independent Clock BlockRAM选项,即读写使用不同的时钟,存储器使用FPGA器件中的块RAM。在同步周原创 2021-10-02 11:55:54 · 472 阅读 · 0 评论 -
DDR3 IP设计说明
DDR3 IP设计说明DDR3 IP核概述DDR3控制器包括用户接口(User Interface)模块、存储器控制模块(Memory Controller)模块、初始化和校准(Initialization/Calibration)模块、物理层(Physical Layer)模块。用户接口模块用于连接FPGA内部逻辑;存储器控制器模块实现DDR3的主要读写时序和数据缓存交互;初始化和校准模块实现DDR3芯片的上电初始化配置以及时序校准;物理层模块则实现和DDR3芯片的接口。DDR3 IP核配置首原创 2021-10-01 17:15:11 · 1087 阅读 · 2 评论 -
CMOS传感器简介
CMOS传感器简介图像传感器主要有两类,即CCD(Charge Coupled Device,电荷耦合器件)和CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)。CCD传感器和CMOS传感器都是将光线(光子)转换成电子信号(电子)。CCD和CMOS成像器都是利用光电效应通过光产生电子信号,也就是说,成像器将光先转换成电荷,然后进一步处理成为电子信号。在CCD传感器中,每一个像素捕获的电荷通过有限数量的传输节点(通常只有一个)转移,转换电压信号原创 2021-09-30 10:58:45 · 1947 阅读 · 0 评论 -
AXI总线协议介绍
AXI总线协议介绍AXI(Advanced eXtensible Interface)协议是一种面向高性能、高带宽系统设计的总线协议,能够满足各种高速系统的总线协议,能够满足各种高速系统的总线互连。AXI协议的主要特点有:独立的地址,控制和数据接口支持使用字节选通的不对齐数据的传输基于特定地址进行的突发传输通过独立的读和写通道实现低成本直接内存访问(DMA)支持无序数据传输提供多级寄存器锁存的支持,实现更好的实现收敛AXI协议是基于突发传输的。每一次传输时,地址通道上有地址和控制信息,描原创 2021-09-29 19:31:40 · 2652 阅读 · 0 评论 -
中值滤波器
中值滤波器`timescale 1ns / 1psmodule median_filtering( input clk, input rst_n, input [15:0] data_in, input data_in_en, input hs_in, input vs_in, outp原创 2021-09-28 16:20:11 · 232 阅读 · 0 评论 -
RGB 转 YUV 算法
RGB 转 YUV 算法`timescale 1ns / 1ps/*RGB 转 YUV 算法计算公式:Y = 0.183R + 0.614G + 0.062B + 16;CB = -0.101R - 0.338G + 0.439B + 128;CR = 0.439R - 0.399G - 0.040B + 128;其中,时序在计算过程中完全没有用到输入到输出有三个 clock 的时延。第一级流水线计算所有乘法;第二级流水线计算所有加法,把正的和负的分开进行加法;第三级流水线计算最终的原创 2021-09-28 16:18:07 · 1190 阅读 · 0 评论 -
SDRAM控制器设计
SDRAM控制器设计SDRAM 器件引脚示意图和功能框图如下:SDRAM 器件有如下的特性通常情况下, SDRAM 存储器工作在 3.3V 的电压下(需要注意的是 DDR DRAM工作电压是 2.5V、 DDR2SDRAM 工作电压是 1.8V),拥有一个同步接口, SDRAM 的所有信号都在时钟信号的上升沿被寄存。SDRAM 是拥有四个 Bank 的动态刷新存储器,对于 256Mbit 的 SDRAM,每个Bank 存储64Mbit(67108864bit)的数据。当 SDRAM 的数据位宽原创 2021-09-24 17:36:59 · 427 阅读 · 0 评论 -
TFT显示屏驱动设计与验证
TFT显示屏驱动设计与验证 RGB 接口的 TFT 屏扫描方式和 VGA (Video Graphics Array)标准类似,也是使用行列扫 描的方式。在介绍 TFT 屏扫描原理之前,先来介绍下 VGA 显示器的扫描原理。 在 VGA 标准兴起的时候,常见的彩色显示器一般由 CRT(阴极射线管)构成,色彩是由 RGB 三基色组成。显示是用逐行扫描的方式解决。阴极射线枪发出的电子束打在涂有荧光粉的荧光屏上,产生 RGB 三基色,合成一个彩色像素,扫描从屏幕的左上方开始,从左到右,原创 2021-09-22 10:31:44 · 1208 阅读 · 0 评论 -
线性序列机与串行接口ADC驱动设计与验证
线性序列机与串行接口ADC驱动设计与验证ADC128S022 型 ADC 内部工作原理在 AC620 开发板上使用的模数转换器为逐次逼近型的低功耗芯片 ADC128S022,其具有8 通道以及 12 位的分辨率。电源采用独立的模拟供电以及数字供电,其中模拟电源 VA 输入范围为 2.7V~5.25V,数字电源 VD 输入范围为 2.7V~VA。其与外部通信支持多种接口如:SPI、 QSPI、 MICROWIRE 以及通用的 DSP 接口。转换速度在 50kps~200kps,典型情况下当3V 供原创 2021-09-18 15:56:35 · 470 阅读 · 0 评论 -
易错笔记总结
易错笔迹总结每一个模块都需要有一个使能信号(en)和一个结束信号(done),以便控制每一个模块的开始和结束。这个使能信号(en)一般是一般是以脉冲的形式给出。编写激励文件时,输入是reg,输出是wire。这是连接试验台的检验性质决定的。每一个输入端口,在激励时记得初始化。.........原创 2021-09-18 09:59:06 · 208 阅读 · 0 评论 -
线性序列机与串口接口DAC驱动设计与验证
线性序列机与串口接口DAC驱动设计与验证TLV5618 型 DAC 内部工作原理TLV5618 是一个基于电压输出型的双通道 12 位单电源数模转换器,其由串行接口、一个速度和电源控制器、电阻网络、 2 倍增益的输出缓冲器组成。TLV5618 使用 CMOS 电平兼容的三线制串行总线与各种处理器进行连接,接收控制器发送的 16 位的控制字, 这 16 位的控制字被分为 2 个部分,包括 4 位的编程位, 12 位的数据位当片选(CS ̅̅̅)信号为低电平时,数据在每个 SCLK 信号的下降沿原创 2021-09-17 19:55:28 · 422 阅读 · 0 评论 -
PWM 发生器模块设计
PWM 发生器模块设计PWM 产生原理可得出以下两个主要电路: 定时器/计数器电路以及输出比较电路。 最终输出 PWM 波的频率计算公式为:???????????????? =???????????????? / (????????????????????????????_???????????? + 1)因此, 当输出频率确定时,可计算得到预重装值,计算公式为:????????????????????????????_???????????? =(???????????????? / ????原创 2021-09-17 15:53:12 · 2661 阅读 · 0 评论 -
搭建串口收发与存储双口RAM简易应用系统
搭建串口收发与存储双口RAM简易应用系统 为了实现通过串口发送数据到 FPGA 中, FPGA 接收到数据后将数据存储在双口 ram 的一段连续空间中,当需要时,按下按键 S0,则 FPGA 将 RAM 中存储的数据通过串口发送出去。先进行功能划分:串口接收模块、按键消抖模块、 RAM 模块、串口发送模块以及控制模块。串口接收模块参考:串口接收模块按键消抖模块参考:按键消抖模块RAM模块参考:RAM模块描述现在编写本系统的控制模块 CTRL.v,模块的接口可参照系统结构图写出。为原创 2021-09-17 10:48:41 · 426 阅读 · 0 评论 -
状态机实现按键消抖
状态机实现按键消抖module key_filter( Clk, //50M时钟输入 Rst_n, //模块复位 key_in, //按键输入 key_flag, //按键标志信号 key_state //按键状态信号 ); input Clk; input Rst_n; input key_in; output reg key_flag; output reg key_state; localparam IDEL =原创 2021-09-17 10:22:57 · 1352 阅读 · 0 评论 -
双口RAM
双口RAMIP配置激励文件`timescale 1ns / 1ps`define clk_period 20module dpram_tb( ); reg clock; reg [7:0]data; reg [7:0]rdaddress; reg [7:0]wraddress; reg wren; wire [7:0]q; integer i;dist_mem_gen_0 dist_mem_gen_0 ( .a(data), // input wir原创 2021-09-17 09:25:22 · 425 阅读 · 0 评论 -
UART 异步串行通信发送模块设计与实现
UART 异步串行通信发送模块设计与实现串口发送模块接口设计注意:在每一次设计端口时,我们都要求可以随时控制该模块开始和结束,因此在设计每一个模块时,务必要加模块的使能端口(EN)和模块结束端口(DONE)。这也是握手机制的本质所在。注意:在为了每一次都可以稳定的接收到数据,需要在接收前打一拍,同样为了在发送稳定的数据,需要在发送的时候打一拍。发送的代码如下:`timescale 1ns / 1psmodule uart_byte_tx( input Clk,原创 2021-09-16 17:13:21 · 392 阅读 · 0 评论 -
任务和函数的使用
任务及函数的使用任务和函数有些不同主要的不同有以下四点:函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。函数不能启动任务,而任务能启动其它任务和函数。函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。函数返回一个值,而任务则不返回值。函数的目的是通过返回一个值来响应输入信号的值。任务却能支持多种目的,能计算多个结果值,这些结果值只能通过被调用的任务的输出或总线端口送出。Verilog HDL模块使用函数时是把它当作表达式中的操作符,这个操作的结果原创 2021-09-15 19:59:02 · 479 阅读 · 0 评论 -
IP核应用之计数器
IP核应用之计数器IP核创建流程首先建立一个工程,然后再点击IP Catalog,接着在Search中输入counter,然后点击Binary Counter。进入计数器的配置界面。进来后,配置位宽为4,设置计数到10然后点击Control,接着添加一个时钟使能Clock Enable.最后点击创建接着例化IP。例化的方式有二种,一种是手动例化,一种是自动例化。这里展示手动例化,自动例化请参考添加链接描述首先点击IP Scurces 找到.v文件点击,然后复制例化模板,进行例化。这里生原创 2021-09-15 17:38:15 · 1408 阅读 · 0 评论 -
3_8译码器
3_8译码器真值表如下:原理图如下:端口命名如下:代码如下:`timescale 1ns / 1ps////////////////////////////////////////////////////////////////////////////////////3—8译码器//////////////////////////////////////////////////////////////////////////////////module decoder3_8(原创 2021-07-01 14:43:25 · 3098 阅读 · 0 评论 -
计数器实现
计数器结构图如下:引脚分布如下:代码如下:`timescale 1ns / 1ps////////////////////////////////////////////////////////////////////////////////////计数器//////////////////////////////////////////////////////////////////////////////////module bin_counter( input原创 2021-07-01 15:32:37 · 561 阅读 · 0 评论