FPGA片内FIFO读写测试Verilog逻辑源码Quartus工程文件+文档说明,使用 FPGA 内部的 FIFO 以及程序对该 FIFO 的数据读写操作。FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////module fifo_test( input clk, //50MHz时钟 input rst_n //复位信号,低电平有效 );//-----------------------------------------------------------localparam W_IDLE = 1;localparam W_FIFO = 2; localparam R_IDLE = 1;localparam R_FIFO = 2; reg[2:0] write_state;reg[2:0] next_write_state;reg[2:0] read_state;reg[2:0] next_read_state;reg[15:0] w_data; //FIFO写数据wire wr_en; //FIFO写使能wire rd_en; //FIFO读使能wire[15:0] r_data; //FIFO读数据wire full; //FIFO满信号 wire empty; //FIFO空信号 wire[8:0] rd_data_count; wire[8:0] wr_data_count; ///产生FIFO写入的数据always@(posedge clk or negedge rst_n)begin if(rst_n == 1'b0) write_state <= W_IDLE; ELSE write_state <= next_write_state;endalways@(*)begin case(write_state) W_IDLE: if(empty == 1'b1) //FIFO空, 开始写FIFO next_write_state <= W_FIFO; ELSE next_write_state <= W_IDLE; W_FIFO: if(full == 1'b1) //FIFO满 next_write_state <= W_IDLE; ELSE next_write_state <= W_FIFO; default: next_write_state <= W_IDLE; endcaseendassign wr_en = (next_write_state == W_FIFO) ? 1'b1 : 1'b0; always@(posedge clk or negedge rst_n)begin if(rst_n == 1'b0) w_data <= 16'd0; ELSE if (wr_en == 1'b1) w_data <= w_data + 1'b1; ELSE w_data <= 16'd0; end///产生FIFO读的数据always@(posedge clk or negedge rst_n)begin if(rst_n == 1'b0) read_state <= R_IDLE; ELSE read_state <= next_read_state;endalways@(*)begin case(read_state) R_IDLE: if(full == 1'b1) //FIFO满, 开始读FIFO next_read_state <= R_FIFO; ELSE next_read_state <= R_IDLE; R_FIFO: if(empty == 1'b1)
上传时间: 2021-12-19
上传用户:20125101110
STM32F103开发板 DHT11温湿度DS18B20 气体MQ-2光敏声控雨滴传感器实验程序**--------------------------------------------------------------------------------------------------------** Created by: FiYu** Created date: 2015-12-12** Version: 1.0** Descriptions: DHT11温湿度传感器实验 **--------------------------------------------------------------------------------------------------------** Modified by: FiYu** Modified date: ** Version: ** Descriptions: ** Rechecked by: **********************************************************************************************************/#include "stm32f10x.h"#include "delay.h"#include "dht11.h"#include "usart.h"DHT11_Data_TypeDef DHT11_Data;/************************************************************************************** * 描 述 : GPIO/USART1初始化配置 * 入 参 : 无 * 返回值 : 无 **************************************************************************************/void GPIO_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; /* Enable the GPIO_LED Clock */ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO , ENABLE); GPIO_DeInit(GPIOB); //将外设GPIOA寄存器重设为缺省值 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_DeInit(GPIOA); //将外设GPIOA寄存器重设为缺省值 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOB , GPIO_Pin_9); //初始状态,熄灭指示灯LED1}/************************************************************************************** * 描 述 : 串口显示实时温湿度 * 入 参 : 无 * 返回值 : 无 **************************************************************************************/void DHT11_SCAN(void){ if( Read_DHT11(&DHT11_Data)==SUCCESS) { printf("\r\n读取DHT11成功!\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n",\ DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci); //printf("\r\n 湿度:%d,温度:%d \r\n" ,DHT11_Data.humi_int,DHT11_Data.temp_int); } ELSE { printf("Read DHT11 ERROR!\r\n"); }}/************************************************************************************** * 描 述 : MAIN函数 * 入 参 : 无 * 返回值 : 无 **************************************************************************************/int main(void){ SystemInit(); //设置系统时钟72MHZ GPIO_Configuration(); USART1_Init(); //初始化配置TIM DHT11_GPIO_Config(); // 初始化温湿度传感器PB1引脚初始时为推挽输出 GPIO_ResetBits(GPIOB , GPIO_Pin_9); delay_ms(500); while(1) { GPIO_SetBits(GPIOB , GPIO_Pin_9); DHT11_SCAN(); //实时显示温湿度 delay_ms(1500); } }
上传时间: 2022-05-03
上传用户:得之我幸78
基于STC89C51单片机的智能电热水器的控制器的设计,要达到的控制要求有:(1)用LCD1602液晶显示水温、设置上下限和定时时间,(2)水温检测显示范围为00~99℃,精度为±1℃。(3)温度预设范围为0~99℃,当检测温度低于预设温度时,开始加热;检测温度高于预设温度时,停止加热。(4)设置4个程序按键。分别问设置按键、加键、减键、确定。(5)可以红外遥控,通过红外一体接收探头接收遥控器信号,执行与主板按键同等功能。(6)有水位检测功能,无水自动上水,无水不加热。//外部中断解码程序_外部中断0void intersvr1(void) interrupt 2 using 1{ TR0=1; Tc=TH0*256+TL0;//提取中断时间间隔时长 TH0=0; TL0=0; //定时中断重新置零 if((Tc>Imin)&&(Tc<Imax)) { m=0; f=1; return; } //找到启始码 if(f==1) { if(Tc>Inum1&&Tc<Inum3) { Im[m/8]=Im[m/8]>>1|0x80; m++; } if(Tc>Inum2&&Tc<Inum1) { Im[m/8]=Im[m/8]>>1; m++; //取码 } if(m==32) { m=0; f=0; if(Im[2]==~Im[3]) { IrOK=1; TR0=0; } ELSE IrOK=0; //取码完成后判断读码是否正确 } //准备读下一码 }}
上传时间: 2022-05-14
上传用户:
PID-小车类-手机遥控十分mimi蓝牙小车V2资料全部开源/**************************************************************************函数功能:增量PI控制器入口参数:编码器测量值,目标速度返回 值:电机PWM根据增量式离散PID公式 pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]e(k)代表本次偏差 e(k-1)代表上一次的偏差 以此类推 pwm代表增量输出在我们的速度控制闭环系统里面,只使用PI控制pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)**************************************************************************/int Speed_Incremental_PI (int Encoder,int Target){ static int Bias,Pwm,Last_bias; Bias=Encoder-Target; //计算偏差 Pwm+=Speed_Kp*(Bias-Last_bias)+Speed_Ki*Bias; //增量式PI控制器if(Pwm>500)Pwm=500;ELSE if(Pwm<-500)Pwm=-500; Last_bias=Bias; //保存上一次偏差 return Pwm; //增量输出}
上传时间: 2022-06-01
上传用户:20125101110
应广单片机 MINI-C编程指南.Mini-c总结文档一、缺点:(一)函数不能带参数.解决方法:通过A或全局变量进行参数传递;(二)不能使用for循环解决方法:用while循环代替for循环.(三)数组和指针功能弱化解决方法:① 使用rom查表② 使用ram查表(四)不支持全局变量定义同时进行初始化解决方法: 在初始化的时候记得对全局变量进行初始化. (五)Bit变量只支持写入0,或1,不支持直接bit变量取反解决方法 :if(uBitFlag){ uBitFlag=0;}ELSE{ uBitFlag=1; } 二、优点:(一)函数不带参数,可以节省堆栈空间(二)支持ROM查表(三).delay时间非常准确,无需手工计算(四)支持bit变量,节省ram空间,支持字,字节拆分.(五)烧录支持滚动码写入.(六)端口配置可以使用脚本(七) 代码自动生成
标签: 单片机
上传时间: 2022-06-17
上传用户:
基于单片机的密码锁设计,内含工程文件和源码文件以及电路图#include "config.h" void main(){ LCD_Initial(); //lcd初始化 init_sys(); //硬件系统初始化 setpsw(); //密码设置 while(1) { time=3; //限定尝试3次 while(1) { inputpsw(); //输入密码 checkpsw(); //密码验证 checksuper(); //验证是否是超级密码 if(error_flag==0) {right();break;} ELSE if(time>1) error(); //允许2次尝试错误 ELSE {lock();break;} //3次错误,系统锁定 } }}
上传时间: 2022-07-17
上传用户:默默
000愉快的开始.mp4 33.6M2019-12-17 16:09 001我和Python的第一次亲密接触.mp4 29.4M2019-12-17 16:05 002用Python设计第一个游戏.mp4 51.3M2019-12-17 16:05 003小插曲之变量和字符串.mp4 90.9M2019-12-17 16:05 004改进我们的小游戏.mp4 115.9M2019-12-17 16:05 005闲聊之Python的数据类型.mp4 31.1M2019-12-17 16:05 006Pyhon之常用操作符.mp4 26.1M2019-12-17 16:05 007了不起的分支和循环.mp4 30.6M2019-12-17 16:05 008了不起的分支和循环2.mp4 23.3M2019-12-17 16:05 009了不起的分支和循环3.mp4 23.5M2019-12-17 16:05 010列表:一个打了激素的数组.mp4 23.2M2019-12-17 16:05 011列表:一个打了激素的数组2.mp4 22.1M2019-12-17 16:05 012列表:一个打了激素的数组3.mp4 36.2M2019-12-17 16:05 013元组:戴上了枷锁的列表.mp4 54.2M2019-12-17 16:05 014字符串:各种奇葩的内置方法.mp4 142.5M2019-12-17 16:05 015字符串:格式化.mp4 115.1M2019-12-17 16:05 016序列!序列!.mp4 81.1M2019-12-17 16:05 017函数:Python的乐高积木.mp4 25M2019-12-17 16:05 018函数:灵活即强大.mp4 33.7M2019-12-17 16:05 019函数:我的地盘听我的.mp4 33.1M2019-12-17 16:05 020函数:内嵌函数和闭包.mp4 35.5M2019-12-17 16:05 021函数:lambda表达式.mp4 28.9M2019-12-17 16:05 022函数:递归是神马.mp4 48.3M2019-12-17 16:05 023递归:这帮小兔崽子.mp4 39.5M2019-12-17 16:05 024递归:汉诺塔.mp4 28.8M2019-12-17 16:05 025字典:当索引不好用时.mp4 41.4M2019-12-17 16:05 026字典:当索引不好用时2.mp4 34.4M2019-12-17 16:05 027集合:在我的世界里,你就是唯一.mp4 19.4M2019-12-17 16:05 028文件:因为懂你,所以永恒.mp4 55.5M2019-12-17 16:05 029文件:一个任务.mp4 41.8M2019-12-17 16:05 030文件系统:介绍一个高大上的东西.mp4 80.3M2019-12-17 16:05 031永久存储:腌制一缸美味的泡菜.mp4 39.9M2019-12-17 16:05 032异常处理:你不可能总是对的.mp4 49M2019-12-17 16:05 033异常处理:你不可能总是对的2.mp4 34.9M2019-12-17 16:05 034丰富的ELSE语句及简洁的with语句.mp4 24M2019-12-17 16:05 035图形用户界面入门:EasyGui.mp4 73.5M2019-12-17 16:05 036类和对象:给大家介绍对象.mp4 30.2M2019-12-17 16:05 037类和对象:面向对象编程.mp4 28.8M2019-12-17 16:05 038类和对象:继承.mp4 42.2M2019-12-17 16:05 039类和对象:拾遗.mp4 41.8M2019-12-17 16:05 040类和对象:一些相关的BIF.mp4 32.8M2019-12-17 16:05 041魔法方法:构造和析构.mp4 26.8M2019-12-17 16:05 042魔法方法:算术运算.mp4 30M2019-12-17 16:05 043魔法方法:算术运算2.mp4 31.8M2019-12-17 16:05 044魔法方法:简单定制.mp4 78.9M2019-12-17 16:05 045魔法方法:属性访问.mp4 42.9M2019-12-17 16:05 046魔法方法:描述符(Property的原理).mp4 42.4M2019-12-17 16:05 047魔法方法:定制序列.mp4 23M2019-12-17 16:05 048魔法方法:迭代器.mp4 32.9M2019-12-17 16:05 049乱入:生成器.mp4 33.3M2019-12-17 16:05 050模块:模块就是程序.mp4 25.6M2019-12-17 16:05 051模块:__name__='__main__'、搜索路径和包.mp4 29.6M2019-12-17 16:05 052模块:像个极客一样去思考.mp4 63M2019-12-17 16:05 053论一只爬虫的自我修养.mp4 48.1M2019-12-17 16:05 054论一只爬虫的自我修养2:实战.mp4 71.6M2019-12-17 16:05 055论一只爬虫的自我修养3:隐藏.mp4 54.8M2019-12-17 16:05 056轮一只爬虫的自我修养4:OOXX.mp4 94M2019-12-17 16:05 057论一只爬虫的自我修养5:正则表达式.mp4 58.6M2019-12-17 16:05 058论一只爬虫的自我修养6:正则表达式2.mp4 75.2M2019-12-17 16:05 059论一只爬虫的自我修养7:正则表达式3.mp4 57.2M2019-12-17 16:05 060论一只爬虫的自我修养8:正则表达式4.mp4 89.1M2019-12-17 16:05 061论一只爬虫的自我修养9:异常处理.mp4 32.1M2019-12-17 16:05 062论一只爬虫的自我修养10:安装Scrapy.mp4 58.7M2019-12-17 16:05 063论一只爬虫的自我修养11:Scrapy框架之初窥门径.mp4 156.5M2019-12-17 16:05 064GUI的终极选择:Tkinter.mp4 43.4M2019-12-17 16:05 065GUI的终极选择:Tkinter2.mp4 60.1M2019-12-17 16:05 066GUI的终极选择:Tkinter3.mp4 …………
上传时间: 2013-04-15
上传用户:eeworm