I2C VHDL程序
http://blog.sina.com.cn/s/blog_9bd80b7601012o9y.html
library ieee ;
use ieee.std_logic_1164.all ;
use ieee.std_logic_arith.all ;
use ieee.std_logic_unsigned.all ;
entity I2C_Control is
port (
CLKI :IN Std_logic ;
RST :IN Std_logic ;
Slave_add :in std_logic_vector(3 downto 0);
addr :in std_logic_vector(7 downto 0);
wr_rd :IN Std_logic ;
DAT1 :in std_logic_vector(7 downto 0);
Delay_Time :in integer range 0 to 255;
A :buffer std_logic_vector(2 downto 0);
WP :buffer std_logic;
SCL :buffer std_logic;
SDA :buffer std_logic
) ;
end I2C_Control ;
architecture Arch of I2C_Control is
type state1 is (Idle,Idle1, I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,Iok);
signal current_state,next_state : state1;
signal I2C_Sent :std_logic_vector(26 downto 0);
begin
I2C_Sent <= Slave_add & A & wr_rd &'0'& addr &'0'& DAT1&'0' ;
process(clki,RST)
begin
if RST = '1' then
current_state <= Idle;
elsif clki'event and clki = '0' then
current_state <= next_state;
end if;
end process;
process(clki)
variable i :integer range 0 to 63;
variable cnt :integer range 0 to 1023;
begin
if clki'event and clki = '1' then
A<="111";
case current_state is
when Idle =>
SCL <= '1'; SDA <= '1';
WP <= '1';
next_state <= Idle1;
when Idle1 =>
SCL <= '1'; SDA <= '1';
WP <= '0';
next_state <= I1;
when I1 =>
SDA <= '0';
next_state <= I2;
when I2 =>
SCL <= '0';
i :=26;
next_state <= I3;
when I3 =>
SCL <= '0';
SDA <= I2C_Sent(i);
next_state <= I4;
when I4 =>
SCL <= '1';
next_state <= I5;
when I5 =>
if i= 0 then
next_state <= I6;
else
i := i-1;
next_state <= I3;
end if;
when I6 =>
SCL <= '0';
next_state <= I7;
when I7 =>
SCL<= '1';
next_state <= I8;
when I8 =>
SDA <= '1';
next_state <= I9;
when I9 =>
WP<= '1'; --1
next_state <= I10;
WHEN I10 =>
if cnt = Delay_Time then
cnt := 0;
next_state <= Idle;
else
cnt := cnt +1;
end if;
when Iok =>
SCL <='1';
SDA <= '1';
next_state <= Iok;
when others =>
next_state <= Iok;
end case;
end if;
end process;
end Arch;
I2C VHDL程序的更多相关文章
- VHDL程序的库
VHDL库存储和放置了可被其他VHDL程序调用的数据定义.器件说明.程序包等资源.VHDL库的种类有很多,但最常见的库有IEEE标准库.WORK库.IEEE标准库主要包括STD_LOGIC_1164. ...
- 毕业设计预习:VHDL入门知识学习(一) VHDL程序基本结构
VHDL入门知识学习(一) VHDL程序基本结构 简介 VHDL程序基本结构 简介 概念: HDL-Hardware Description Language-硬件描述语言-描述硬件电路的功能.信号连 ...
- 基于BASYS2的VHDL程序——交通灯
请尊重作者版权,转载请注明原地址: http://www.cnblogs.com/connorzx/p/3676746.html 数电实验交通灯VHDL版,程序写的扩展性很差,待以后有时间进行优化. ...
- 基于BASYS2的VHDL程序与仿真——50%占空比8分频器
转帖请注明转自http://www.cnblogs.com/connorzx/p/3547673.html 一.新建工程 1.点击File->New Project, 2.点击Next 注:此处 ...
- Linux i2c 读写程序
/* This software uses a BSD license. Copyright (c) 2010, Sean Cross / chumby industriesAll rights re ...
- 基于BASYS2的VHDL程序——分频和数码管静态显示程序
转载请注明出处:http://www.cnblogs.com/connorzx/p/3633860.html 分频是基于计数器程序.由于FPGA的并行处理能力,根本不需要单片机式的中断指令,用起来很方 ...
- 基于BASYS2的VHDL程序与烧写——按键消抖程序
请尊重作者版权,转载请注明源地址http://www.cnblogs.com/connorzx/p/3548364.html 按键在按下的过程中通常会产生一段时间的抖动,为了消除这种抖动,一般采取两种 ...
- 基于BASYS2的VHDL程序——交通灯(状态机版)
请尊重作者版权,转载注明源地址:http://www.cnblogs.com/connorzx/p/3694618.html 使用了状态机,增加了可读性和用户体验. library IEEE; use ...
- 基于BASYS2的VHDL程序——数字钟(最终版)
转载请注明原地址:http://www.cnblogs.com/connorzx/p/3674178.html 调时电路正常工作.一切正常.发现做FPGA还是得从数电的思路思考,设置一个预置使能端,预 ...
随机推荐
- Runtime初学习
什么是runtime? runtime是一套纯c的API.平时用oc写的代码在运行时都会先转成runtime代码,然后在执行. runtime可以干什么? 1.交换方法.(method_exchang ...
- matlab图
.6 统计作图 4.6.1 正整数的频率表 命令 正整数的频率表 函数 tabulate 格式 table = tabulate(X) %X为正整数构成的向量,返回3列:第1列中包含X的值第2列为这些 ...
- js 什么是变量的提升?
- PHP的版本选择 (转)
PHP的版本选择 http://yubosun.akhtm.com/tech/php-version.htm PHP版本特别多,特别杂,想自己搭一套php的运行环境可不是一件容易的事,稍不留神就遇到一 ...
- 关于AFNetworking菊花转圈圈的问题
刚开始接触AFN的时候,发现菊花老是不转,百度到大神的博客上,说AFN里面的API的网络加载菊花默认是关闭的(才发现默认情况下AFN的转圈圈的菊花是关闭的)需要手动打开才能够显示转圈圈,打开的方法是: ...
- 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇
驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ...
- vim--macro
例: qa some vim command q 这个宏只记录了vim命令到寄存器a中,执行这个宏可以用命令: @a 也可以加上执行次数: 10@a 执行10次 当你执行过一次@a之后,你可以用 @@ ...
- JavaWeb 学习001-登录页面
首先实现一个web应用的登录页面 1.遇到的问题: Servlet中 post 或者 get 方式 不能提交? 就是提交后,控制台没有反应,而且浏览器显示如图: 这样应该是不能进行页面的跳转,对这个, ...
- 记录第一次搭建svn服务器
搭建svn服务器需要另外的软件, 在此以32位的为例: 安装过程非常简单, 一直下一步下一步确定就好了, svn安装完毕再安装中文语言包, 安装完成后可以在设置里面找到中文简体选择就OK了 主要记录一 ...
- MyEclipse +Flex 整合
最近想利用red5开发一个流媒体的程序,在网上找了半天没有一个可用的代码,要么是下载需要多少币,要么是没有.纠结了半天,最后决定自检看着文字版本的教程,自己编写一个. 看着一 ...