新人正在接触fpga,在做vga彩条输出,但显示屏上一直是无信号输出,基础代码求大佬指导一二

2019-07-15 21:40发布

本帖最后由 演戲00 于 2017-5-27 21:43 编辑

刚接触FPGA不久,这段代码就是直接抄书上的例子,但用vga接显示屏之后一直是无信号,我的板子的clk是20MHz,vga的5个引脚也都没接错,MD我接了一个按键,图片上是我这道题目的要求或者说我想达到的结果,求大佬解答。。。。。
新人突然被卡很迷茫啊,而且都不知道怎么入手。。。
  1. LIBRARY IEEE;                                                                                        ---vga显示器彩条发生器
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  4. ENtiTY COLOR IS
  5.         PORT ( CLK, MD : IN STD_LOGIC;
  6.         HS, VS, R, G, B : OUT STD_LOGIC );              ---行场同步及红绿蓝控制
  7. END COLOR;
  8. ARCHITECTURE behav OF COLOR IS
  9.         SIGNAL HS1,VS1,FCLK,CCLK        : STD_LOGIC;
  10.         SIGNAL MMD : STD_LOGIC_VECTOR(1 DOWNTO 0);        ---方式选择
  11.         SIGNAL FS : STD_LOGIC_VECTOR(3 DOWNTO 0);
  12.         SIGNAL CC : STD_LOGIC_VECTOR(4 DOWNTO 0);         ---行同步/横彩条生成
  13.         SIGNAL LL : STD_LOGIC_VECTOR(8 DOWNTO 0);         ---场同步/竖彩条生成
  14.         SIGNAL GRBX : STD_LOGIC_VECTOR(3 DOWNTO 1);       ---x横彩条
  15.         SIGNAL GRBY : STD_LOGIC_VECTOR(3 DOWNTO 1);       ---y竖彩条
  16.         SIGNAL GRBP : STD_LOGIC_VECTOR(3 DOWNTO 1);
  17.         SIGNAL GRB : STD_LOGIC_VECTOR(3 DOWNTO 1);
  18. BEGIN
  19.         GRB(2) <= (GRBP(2) XOR MD) AND HS1 AND VS1;
  20.         GRB(3) <= (GRBP(3) XOR MD) AND HS1 AND VS1;
  21.         GRB(1) <= (GRBP(1) XOR MD) AND HS1 AND VS1;
  22.         PROCESS( MD )        BEGIN
  23.                 IF MD'EVENT AND MD = '0' THEN
  24.                         IF MMD = "10" THEN MMD <= "00";
  25.                          ELSE MMD <= MMD + 1;  END IF;             ---3种模式
  26.                 END IF;
  27.         END PROCESS;
  28.         PROCESS( MMD )        BEGIN
  29.                 IF MMD = "00" THEN        GRBP <=GRBX;             ---选择横彩条
  30.                 ELSIF MMD = "01" THEN        GRBP<=GRBY;           ---选择竖彩条
  31.                 ELSIF MMD = "10" THEN        GRBP<=GRBX XOR GRBY;  ---产生棋盘格
  32.                  ELSE GRBP <= "000"; END IF;
  33.         END PROCESS;
  34.         PROCESS( CLK )        BEGIN
  35.                 IF CLK'EVENT AND CLK = '1' THEN               ---13MHz 13分频
  36.                         IF FS = 13 THEN FS <= "0000"; ELSE FS <=(FS+1); END IF;
  37.                 END IF;
  38.         END PROCESS;        
  39.         FCLK <=FS(3); CCLK <= CC(4);
  40.         PROCESS(FCLK)        BEGIN
  41.                 IF FCLK'EVENT AND FCLK = '1' THEN
  42.                         IF CC = 29 THEN CC <= "00000"; ELSE CC<=CC+1; END IF;
  43.                 END IF;
  44.         END PROCESS;
  45.         PROCESS( CCLK )        BEGIN
  46.                 IF CCLK'EVENT AND CCLK = '0' THEN
  47.                         IF LL=481 THEN LL<="000000000"; ELSE LL<=LL+1; END IF;
  48.                 END IF;
  49.         END PROCESS;
  50.         PROCESS( CC,LL )        BEGIN
  51.                 IF CC>23 THEN HS1 <= '0';                     --行同步
  52.                 ELSE HS1 <='1'; END IF;
  53.                 IF LL>479 THEN VS1 <= '0';                    --场同步
  54.                 ELSE VS1 <='1'; END IF;
  55.         END PROCESS;
  56.         PROCESS(CC, LL)        BEGIN
  57.                         IF CC < 3 THEN GRBX <= "111";              ---横彩条
  58.                 ELSIF CC < 6 THEN GRBX <= "110";
  59.                 ELSIF CC < 9 THEN GRBX <= "101";
  60.                 ELSIF CC < 12 THEN GRBX <= "100";
  61.                 ELSIF CC < 15 THEN GRBX <= "011";
  62.                 ELSIF CC < 18 THEN GRBX <= "010";
  63.                 ELSIF CC < 21 THEN GRBX <= "001";
  64.                  ELSE GRBX <= "000";        END IF;
  65.                         IF LL < 60 THEN GRBY <= "111";            ---竖彩条
  66.                 ELSIF LL < 120 THEN GRBY <= "110";
  67.                 ELSIF LL < 180 THEN GRBY <= "101";
  68.                 ELSIF LL < 240 THEN GRBY <= "100";
  69.                 ELSIF LL < 300 THEN GRBY <= "011";
  70.                 ELSIF LL < 360 THEN GRBY <= "010";
  71.                 ELSIF LL < 420 THEN GRBY <= "001";
  72.                 ELSE GRBY <= "000";        END IF;
  73.         END PROCESS;
  74.         HS<=HS1 ; VS<=VS1 ;R<=GRB(2) ;G<=GRB(3) ; B<=GRB(1);
  75. END behav;
复制代码

20170527_213415.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
演戲00
1楼-- · 2019-07-16 02:33
基础代码求解答,求小编拉上推荐
学习者2016
2楼-- · 2019-07-16 05:01
你好,可以告诉我一下书名吗,最近在做关于图像显示的课程设计 谢谢
学习者2016
3楼-- · 2019-07-16 05:34
PROCESS( MD )        BEGIN
                IF MD'EVENT AND MD = '0' THEN
                        IF MMD = "10" THEN MMD <= "00";
                         ELSE MMD <= MMD + 1;  END IF;             ---3种模式
                END IF;
请问这一段有误吗
演戲00
4楼-- · 2019-07-16 07:53
 精彩回答 2  元偷偷看……
演戲00
5楼-- · 2019-07-16 08:08
学习者2016 发表于 2017-5-29 16:36
你好,可以告诉我一下书名吗,最近在做关于图像显示的课程设计 谢谢

EDA技术实用教程
fpgaee
6楼-- · 2019-07-16 08:48
学习学习

一周热门 更多>