集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2997|回复: 5

请教一个VHDL程序

[复制链接]
vvt 发表于 2010-11-16 16:59:14 | 显示全部楼层 |阅读模式
请教一个VHDL程序
 楼主| vvt 发表于 2010-11-16 16:59:32 | 显示全部楼层
屏幕上显示一个方块,然后这个方块是在水平方向上移动的

为此写了下面一段程序,但是运行后结果是只是屏幕上方块位置的初始值处显示,运动不起来,不晓得程序是不是程序问题,如果是出在哪里呢?

对了,VGA显示用的屏幕是800*640  60Hz的,是digilent上给个那个VGA的ip核来显示的

下面是我的程序:
        library IEEE;
        use IEEE.STD_LOGIC_1164.ALL;
        use IEEE.STD_LOGIC_ARITH.ALL;
        use IEEE.STD_LOGIC_UNSIGNED.ALL;
        
        entity colormap is
                port( hloc:in std_logic_vector(10 downto 0);
                                vloc:in std_logic_vector(10 downto 0);
                                rgbxut std_logic_vector(7 downto 0);
                                hlocat: inout std_logic_vector(10 downto 0));
        end colormap;
        architecture Behavioral of colormap is
        signal hlocat1:integer:=220;
        signal i:integer:=0;
        begin           
                process(hloc,vloc)      
                begin
                        rgbx<="00000000";
                        if (hloc>=100 and hloc<=550 and vloc>=60 and vloc<=360) then
                                if      (hloc>=320 and hloc<=330) then
                                        rgbx<="00011100";
                                else
                                        rgbx<="11100000";
                                end if;
                        end if;
                        i<=i+1;
                     if i>=60000 then
                                i<=0;
                                hlocat1<=hlocat1+1;
                                        if hlocat1 >500 then
                                        hlocat1<=420;
                                        end if;
                                end if;
                if (hloc>=hlocat1 and hloc<=hlocat1+5 and vloc>=205 and vloc<=210) then
                  i<=i+1;
                  if i>=60000 then
                        i<=0;
                        hlocat1<=hlocat1+1;
                                if hlocat1 >500 then
                                hlocat1<=420;
                                end if;
                        end if;
                  rgbx<="00000011";
                end if;  

                                
           end process
        
        end Behavioral;
 楼主| vvt 发表于 2010-11-16 16:59:46 | 显示全部楼层
用FPGA实现打砖块游戏啊
 楼主| vvt 发表于 2010-11-16 16:59:56 | 显示全部楼层
其实是打乒乓球  呵呵 一个课程的project
 楼主| vvt 发表于 2010-11-16 17:00:11 | 显示全部楼层
其实就是屏幕刷新的平率比较高  然后让那个小方块移动的速度慢下来  所以用了一个计数器来实现分频   

好像是用错了数据类型了

用VHDL时因为老师上课用这个做例子  然后我也是现学现卖   所以VHDL和Verilog对我没有区别   都不熟
weibode01 发表于 2010-11-17 10:29:59 | 显示全部楼层
呵,VHDL跟verilog是有一定的区别滴
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-16 03:19 , Processed in 0.085081 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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