打印

求救,rs232接受程序的问题

[复制链接]
1636|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wy17416|  楼主 | 2009-5-22 18:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
rs232接收器的程序,非常简单的程序,仿真没问题,但是上硬件,shift_ra输出结果是正确的,但是接受完成标志 irq没有反映。用quartus的嵌入式逻辑分析仪来看出来shift_ra端口有值,其他输出端和中间的寄存器都没有反映!!输入端口就只能看到复位端在按键的控制下电平跳变,232数据的输入端都没有变化!!哪位好心的大侠能帮忙分析下为什么呀?
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity ceshib is
 port(clk:in std_logic;--9600
      dataout:out std_logic_vector(7 downto 0);
      rst,rxd:in std_logic;--复位端、数据输入端
      shift_ra:out std_logic_vector(7 downto 0);
      irq:out std_logic);--接受完成标志
 end;

architecture behav of ceshib is
signal state:std_logic_vector(1 downto 0);--00:空闲;01:移位;10:输出正确数据;11:接受错误数据
 begin
  process(rst,clk,rxd)
    variable shift_r:std_logic_vector(7 downto 0);
    variable n:integer range 0 to 8;
     begin
      if clk'event and clk='1' then
        if rst='0' then
         shift_r:="00000000";
         n:=0;
         state<="00";
         dataout<="00000000";
        irq<='0';
        else
        if state="00" then
             if rxd='0' then
                state<="01";
                irq<='0';
                shift_r:="00000000";
                else
                shift_r:="00000000";
                 n:=0;
                irq<='0';
                end if;
        elsif state="01" then
             if n=8 then
                dataout<=shift_r;
                state<="00";
                n:=0;
                irq<='1';
                else
                shift_r(n):=rxd;
                n:=n+1;
                irq<='0';
                end if;
        end if;
        end if;
        end if;
            shift_ra<=shift_r;
    end process;
end;

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

14

帖子

1

粉丝