搜索
bottom↓
回复: 6

用VHDL编个VGA的程序,怎么屏幕没反应???

[复制链接]

出0入0汤圆

发表于 2011-12-30 19:24:52 | 显示全部楼层 |阅读模式
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date:    13:59:55 12/27/2011
-- Design Name:
-- Module Name:    VGA - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity VGA is
        port(
                        reset :in std_logic;
                        clk   :in std_logic;
                        vga_hs:out std_logic;
                        vga_vs:out std_logic;
                        vga_red:out std_logic;
                        vga_green:out std_logic;
                        vga_blue:out std_logic
        );
end VGA;

architecture Behavioral of VGA is
      signal hs:std_logic;
                signal vs:std_logic;
                signal RGB:std_logic_vector(2 downto 0);
begin
PROCESS(clk)
     VARIABLE i: integer range 0 to 799:=0;
          VARIABLE j: integer range 0 to 79:=0;
BEGIN
if reset='0' then
        RGB<="000";i:=96;j:=0;hs<='1';
                elsif clk'event and clk='1' then
                if i<96 then
                        hs<='0';
                elsif i=799 then
                   i:=0;
                else
                        hs<='1';
                end if;
                if j=79 then
                RGB(1)<=not RGB(1);
                j:=0;
                end if;
                i:=i+1;
                j:=j+1;
                end if;
                vga_hs<=hs;
        end process;
PROCESS(hs)
  VARIABLE k: integer range 0 to 524:=0;
  BEGIN
  if reset ='0' then
  k:=2;vs<='1';
   elsif hs'event and hs='1' then
                if k<2 then
                vs<='0';
                elsif k=524 then
                 k:=0;
                 else
                 vs<='1';
                 end if;
                 k:=k+1;
                 end if;
                 Vga_vs<=vs;
        end process;
        process(clk)
        begin
        if clk'event and clk='1' and vs='1' and hs='1' then
        vga_green<=RGB(2);
        vga_red<=RGB(1);
        vga_blue<=RGB(0);
        end if;
        end process;
end Behavioral;

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-12-30 19:25:18 | 显示全部楼层
请高手看看怎么回事

出0入0汤圆

发表于 2011-12-30 20:39:16 | 显示全部楼层
楼主,用ISE 编某个引脚输出低电平,该怎么写(新手不懂)
我看ISE资料上说,用Assign Pin Location 配置引脚,失败不行,还望解答

出0入0汤圆

发表于 2011-12-30 20:45:30 | 显示全部楼层
不显示,检查下引脚,如果引脚没错的话,就应该是时序问题

出0入0汤圆

发表于 2011-12-30 21:13:00 | 显示全部楼层
至少先用示波器看下输出吧,原来你在南京呀,有硬件?

出0入0汤圆

发表于 2011-12-30 23:53:23 | 显示全部楼层
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;               时钟50M,800*600 72Hz  疯子王
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY VGA IS
PORT(
        CLK:IN STD_LOGIC;
        HS:OUT STD_LOGIC;
        VS:OUT STD_LOGIC;
        R:OUT STD_LOGIC_VECTOR(2 downto 0);
        G:OUT STD_LOGIC_VECTOR(2 downto 0);
        B:OUT STD_LOGIC_VECTOR(1 downto 0)
);
END ENTITY;
ARCHITECTURE ART OF VGA IS
SIGNAL hcnt,vcnt:STD_LOGIC_VECTOR(10 DOWNTO 0);
BEGIN

PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
        IF(hcnt=1039)        THEN
                hcnt<=(others=>'0');
                        IF(vcnt=665) THEN
                                vcnt<=(others=>'0');
                        ELSE
                                vcnt<=vcnt+1;
                   END IF;
        ELSE
                hcnt<=hcnt+1;
        END IF;
END IF;
END PROCESS;

PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
        IF(hcnt>=119)        THEN
                HS<='1';
        ELSE       
                HS<='0';
        END IF;
END IF;
END PROCESS;

PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
        IF(vcnt>=5)        THEN
                VS<='1';
        ELSE       
                VS<='0';
        END IF;
END IF;
END PROCESS;

PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
IF((hcnt>=175 AND hcnt<=975) AND (vcnt>=42 AND vcnt<=642) ) THEN
        R<="111";
        G<="000";
        B<="00";
ELSE
        R<="000";
        G<="000";
        B<="00";
END IF;
END IF;
END PROCESS;
       
END ART;

出0入0汤圆

发表于 2014-2-18 11:48:23 | 显示全部楼层
zgq800712 发表于 2011-12-30 23:53
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;               时钟50M,800*600 72Hz  疯子王
USE IEEE.STD_ ...

这个程序用的是ADV7123芯片吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表