网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> EDA >> Altera >> 文章正文
  I2C在CPLD上的模拟实现源程序           ★★★ 【字体:
I2C在CPLD上的模拟实现源程序
作者:Free    文章来源:Free    点击数:    更新时间:2008-1-6    

程序1:
type clock_type is (s0,s1,s2,s3);
signal state0:clock_type;
signal state1:state_type;
case state is
        when s0=>
          da<='1';
          scl<='1';
          state<=s1;
        when s1=>
          da<='1';
          scl<='1';
          state<=s2;
        when s2=>
          da<='0';
          scl<='1';
          state<=s3;
        when s3=>
          da<='0';
          scl<='0';
          state<=s0;
          state1<=s_byte;
        when others=>
          state<=s0;
       end case;


下面是利用case…when语句编写的移位及输入、输出字节模块。
inoutdata:block
 signal code:std_logic_vector(2 downto 0);
 begin
process(read,endata,cl)   --cl与scl同步
begin
  code<=read & endata & flag;
  if cl'event and cl='1'then
   case code is          
     when "010"|"011" =>   --从MCU读入一个要发送的数据
        datain<=data;
     when "001"=>        --8位左移寄存器,将要输出的位存于data7
        data7<=datain(7);
        datain(0)<='1';
        for i in 1 to 7 loop
         datain(i)<=datain(i-1);
        end loop;
     when "101"=>        --将向MCU发送的数据暂存于dataout
        dataout<=data1;
     when "100"=>        --8位右移寄存器,data0为从SDA接收的值
        data1(0)<=data0;
        for i in 1 to 7 loop
         data1(i)<=data1(i-1);
        end loop;
     when others=>
        null;
   end case;
  end if;
end process;
end block inoutdata;

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    PN码的大步进捕获原理及其CP…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号