
FPGA初级项目
小羊肖恩想
想创造点好东西的真芯工程师
展开
-
EEPROM读写测试_IIC协议讲解!
EEPROM读写测试_IIC协议讲解提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录二、IIC通讯协议# 一、EEPROM简介EEPROM即电可擦除可编程只读存储器,是一种常用的非易失性存储器(掉电后,数据不丢失),100万次为常见主流产品。为了确定是哪个器件与FPGA正在通信,需要IIC协议发送器件地址。二、IIC通讯协议 IIC即集成电路总线,是一种两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。多用于**主机和从机**在数原创 2021-03-16 12:37:10 · 566 阅读 · 1 评论 -
FPGA 频率计实验
FPGA 频率计实验实验要求:实现等精度频率计,通过数码管显示。频率计实验又称为频率计数器,是一种专门对被测信号进行测量的电子仪器。计数法:直接计数单位时间内的被测信号的脉冲数,这种方式测量精度高、速度快、适合不同频率、不同精确度测频的需要。测待测频率,需要有一个基准时钟,基准时钟频率设置为CLK_FS,基准时钟的脉冲数为fs_cnt,生成门控信号为高,在门控信号为高的时候,查待测信号的脉冲数,设待测信号的频率为clk_fx,待测信号的脉冲数为fx_cnt;则满足下列比例:fs_cnt/CLK_原创 2021-02-04 23:16:39 · 748 阅读 · 0 评论 -
FPGA-VGA彩条显示
FPGA VGA彩条显示实验此实验的功能是在显示屏上显示红黄蓝三个颜色的色条VGA 视频图形阵列,一种使用模拟信号进行视频传输的标准。VGA分为行同步与场同步行同步与场同步都分为同步脉冲、显示后沿、有效数据段、显示前沿。本实验选用的VGA为640*480,行有效数据的像素点个数为640个,场有效数据的像素点个数为480个,利用25mhz的时钟进行驱动。module vga(clk,rst_n,hsync,vsync,rgb);input clk;input rst_n;output原创 2021-02-04 16:06:04 · 857 阅读 · 0 评论 -
FPGA-串口通信协议
FPGA 串口通信协议波特率:波特率就是串口的通信速率,常见的波特率有12000bps、4800bps、9600bps、115200bps、256000bps、500000bps,这里波特率的意思是每秒可以传输bit的个数,这里的5207=500000000/9600;传递一个字节需要的时间串口接收模块输入为时钟、复位信号、输入数据、输出数据、数据接收完成标志源代码:module chuanxing_3(clk,rst_n,data_in,po_data,po_en);input clk,rst原创 2021-01-31 19:54:36 · 933 阅读 · 0 评论 -
FPGA FIFO读写实验
FPGA fifo读写实验FIFO: first-in-first-outFIFO一般用于不同时钟域之间的数据传输,也常用来实现不同位宽的接口数据的匹配。FIFO是先进先出的存储器,实现数据的同步与缓存,当数据传输速率不一致的时候,利用FIFO进行数据的缓存。系统框图点击Yes表示读写使用同一个clk,NO代表读写不是使用一个clk,使用不同clk;module ip_fifo(clk,rst_n);input clk,rst_n;//wire definewire wrreq;原创 2021-01-29 21:54:50 · 987 阅读 · 0 评论 -
FPGA,智能抢答器,经过上板验证成功
智能抢答器项目设计功能如下:1.主持人按下清零键,可清除所有信息2.两位选手进行抢答,当一位选手按下抢答键,其他选手再按无效,数码管显示选手序号。3.当剩余时间15s时,开始倒计时,剩余时间为0的时候,表示回答时间到4.当时间到时,蜂鸣器响5s表示时间到,进行下一轮抢答。此项目分为四个模块,分别是按键消抖模块、数据处理模块、倒计时模块、数码管显示模块数据处理模块是用来产生start信号,通知倒计时模块,开始倒计时,同时数据处理模块要输出当前抢答者的序号,倒计时模块的输入信号为start信号,原创 2021-01-29 19:13:27 · 1705 阅读 · 5 评论 -
FPGA-RAM读写测试
FPGA RAM(2)RAM的读写测试,利用signaltap ii进行板级测试错误经验积累:signaltap ii软件在信号测试的时候,有的信号是红色的,无法进行调试,这是因为这个信号在编译的时候被综合掉了,正确的做法是把这个信号,作为输出信号。module ram(input clk,input rst_n,output [7:0] ram_rd_data);//wire definewire ram_wr_en; //ram 写使能wire ram_rd_en; //ram读使能原创 2021-01-27 21:07:15 · 692 阅读 · 0 评论 -
数码管动态显示,包括源代码,测试代码
数码管的动态显示数码管的动态显示是利用人眼的视觉暂停效应,1ms扫描一次数码管,给不同的数码管不同的数值,最好的扫描频率是1000hz,所以需要一个分频时钟,此实验的任务是实现0-100的累加,1s加一次,废话不多说,以下是源代码:顶层模块例化了三个子模块,包括分频模块,计数模块,数码管动态显示模块module dongtaisaomiao(clk,rst_n,seg_sel,seg_led);input clk,rst_n;output [2:0] seg_sel;output [7:0]原创 2021-01-25 20:05:15 · 2355 阅读 · 0 评论 -
数码管静态显示程序,上板验证成功
数码管静态显示按照连接方式不同可分为共阴极与共阳极数码管数码管共十个引脚,除了a,b,c,d,e,f,g,dp,两个公共端,共阴极数码管公共端连接到gnd,共阳极数码管阳极公共端连接到+5V,共阴极需要在端口给低电平,共阳极需要在端口给高电平。数码管分为位选与段选信号,位选给高电平。六个数码管显示0-f,同时数码管每隔0.5s变化一次。由于每隔0.5s变化一次,所以需要一个计时器。如下图是源代码分为顶层模块,计数模块,数码管显示模块。module seg_led_static_top(clk原创 2021-01-23 13:20:43 · 825 阅读 · 0 评论 -
按键控制蜂鸣器,验证成功
按键控制蜂鸣器按下按键的时候蜂鸣器响,再次按下的时候蜂鸣器不响,循环往复。module xiaodou_beep(clk,rst_n,key,beep);input clk,rst_n;input key;reg key_value;output reg beep;reg key_reg;reg [19:0] cnt;always @(posedge clk or negedge rst_n)beginif(!rst_n)key_reg<=0;elsekey_reg<原创 2021-01-23 11:52:15 · 1707 阅读 · 0 评论 -
最完整的按键消抖程序,包括测试代码
按键消抖由于按键在按下的时候会出现轻微的抖动,一般情况下认为当按下或者抬起状态超过10ms的时候,算是稳定。如下是源代码,当key与key_reg状态不同的时候,是发生抖动的时候,或者是按下或者抬起的时候,如果计数超过10ms,则把此时key的状态赋值给key_value,key_flag表示此时的信号是消抖后的信号。module xiaodou(clk,rst_n,key,key_value,key_flag);input clk,rst_n;input key;output reg key_原创 2021-01-22 21:15:25 · 1320 阅读 · 0 评论 -
呼吸灯看它就够 包括源代码,测试代码,经过上板验证成功
呼吸灯小项目设计一个周期为2s呼吸灯,从暗到亮。2s=2000ms 2ms=200us,2us=2000ns下面是时序图当cnt_2ms大于cnt_2us的时候,led赋值为一,其他时候赋值为0;module huxideng_1(clk,rst_n,led);input clk,rst_n;output reg led;reg [9:0] cnt_2us;reg [9:0] cnt_2ms;reg [6:0] cnt;//cntalways @(posedge clk or ne原创 2021-01-20 13:51:53 · 655 阅读 · 0 评论