VHDL-QuartusⅡmodsim
我开始为DE0板编写VGA控制器。我有一个编译并加载到DE0板上的模型。它还显示测试消息。我遇到的问题是,我无法使用Quartus II modsim模拟我的控制器。当我运行模拟时,我无法启动VGA文件。文件中缺少小加号图标。我使用的图片和模型文件如下: vga型号VHDL-QuartusⅡmodsim,vhdl,quartus,Vhdl,Quartus,我开始为DE0板编写VGA控制器。我有一个编译并加载到DE0板上的模型。它还显示测试消息。我遇到的问题是,我无法使用Quartus II modsim模拟我的控制器。当我运行模拟时,我无法启动VGA文件。文件中缺少小加号图标。我使用的图片和模型文件如下: vga型号 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.numeric_std.ALL; ENTITY VGA is PORT (clk
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY VGA is
PORT (clk : IN std_logic; -- demo had 2 bit vector
rst : IN std_logic:='1';
vga_hs, vga_vs : OUT std_logic;
vga_r, vga_g, vga_b : OUT std_logic_vector(3 DOWNTO 0));
END ENTITY VGA;
ARCHITECTURE A1 OF VGA IS
SIGNAL clk25 : std_logic; -- clk25 signal
BEGIN
SYNC1 : ENTITY work.sync(A1)
PORT MAP (clk25, vga_hs, vga_vs, vga_r, vga_g, vga_b);
CLK_25 : ENTITY work.CLK25(behav)
PORT MAP (clk, rst, clk25);
END ARCHITECTURE A1;
同步模型
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY SYNC IS
GENERIC (
h_res : integer:= 640 ; -- horizontal screen resolution
h_fp : integer:= 16 ; -- horizontal front porch
h_bp : integer:= 48 ; -- horizontal back porch
h_sync : integer:= 96 ; -- horizontal sync pulse duration
h_sync_pol : std_logic:='0'; -- horizontal sync pulse state
v_res : integer:= 480 ; -- vertical screen resolution
v_fp : integer:= 10 ; -- vertical front porch
v_bp : integer:= 33 ; -- vertical back porch
v_sync : integer:= 2; -- vertical sync pulse duration
v_sync_pol : std_logic:='0' -- vertical sync pulse state
);
PORT(
clk : IN std_logic;
h_sync_pulse, v_sync_pulse : OUT std_logic;
r, g, b : OUT std_logic_vector(3 DOWNTO 0)
);
END ENTITY SYNC;
ARCHITECTURE A1 OF SYNC IS
CONSTANT h_size : integer := (h_res + h_fp + h_bp + h_sync); -- total horizontal vector
CONSTANT v_size : integer := (v_res + v_fp + v_bp + v_sync); -- total vertical vector
SIGNAL h_pos : integer RANGE 0 TO h_size := 0; -- total horizontal vector
SIGNAL v_pos : integer RANGE 0 TO h_size := 0; -- total vertical vector
BEGIN
TIMING :PROCESS(clk, h_pos, v_pos) IS
BEGIN
IF rising_edge(clk) THEN
IF (h_pos <= 480 or v_pos <= 285) THEN -- middle of the screen is pic res/2 + (FP + sync + BP)
r <= (OTHERS => '1');
g <= (OTHERS => '1');
b <= (OTHERS => '1');
ELSE
r <= (OTHERS => '0');
g <= (OTHERS => '0');
b <= (OTHERS => '0');
END IF;
IF (h_pos <= 480 or v_pos <= 285) THEN -- middle of the screen is pic res/2 + (FP + sync + BP)
r <= (OTHERS => '1');
g <= (OTHERS => '1');
b <= (OTHERS => '1');
ELSE
r <= (OTHERS => '0');
g <= (OTHERS => '0');
b <= (OTHERS => '0');
END IF;
IF (h_pos < h_size) THEN
h_pos <= h_pos + 1;
ELSE
h_pos <= 0;
IF (v_pos < v_size) THEN
v_pos <= v_pos + 1;
ELSE
v_pos <= 0; --< edit was v_pos <= v_pos
END IF;
END IF;
IF (h_pos > h_fp and h_pos < h_fp + h_sync ) THEN -- H_POS between end of FP and the end of H_SYNC
h_sync_pulse <= h_sync_pol; -- H_SYNC needs to stay high during display
ELSE
h_sync_pulse <= '1';
END IF;
IF (v_pos > v_fp and v_pos < v_fp + v_sync ) THEN --V_POS between end of FP and the end of V_SYNC
v_sync_pulse <= v_sync_pol; -- V_SYNC needs to stay high during display
ELSE
v_sync_pulse <= '1';
END IF;
IF ((h_pos > 0 and h_pos < h_fp + h_bp + h_sync) or (v_pos > 0 and v_pos < v_fp + v_bp + v_sync )) THEN --During all of SYNC i.e FP + SYNC + BP colour signals stay low
r <= (OTHERS => '0');
g <= (OTHERS => '0');
b <= (OTHERS => '0');
END IF;
END IF;
END PROCESS TIMING;
END ARCHITECTURE A1;
IEEE库;
使用IEEE.std_logic_1164.ALL;
使用IEEE.numeric_std.ALL;
实体同步是
一般的(
分辨率:整数:=640;--水平屏幕分辨率
h_fp:integer:=16;--水平前廊
h_bp:整数:=48;--水平后廊
h_同步:整数:=96;--水平同步脉冲持续时间
h_sync_pol:std_逻辑:='0';--水平同步脉冲状态
v_res:integer:=480;--垂直屏幕分辨率
v_fp:integer:=10;--垂直前廊
v_bp:整数:=33;--垂直后廊
v_同步:整数:=2;--垂直同步脉冲持续时间
v_sync_pol:std_逻辑:='0'--垂直同步脉冲状态
);
港口(
clk:标准逻辑中;
h_同步_脉冲、v_同步_脉冲:输出标准_逻辑;
r、 g,b:输出标准逻辑向量(3到0)
);
终端实体同步;
SYNC的体系结构是
常量h_大小:整数:=(h_res+h_fp+h_bp+h_sync);--总水平矢量
常量v_大小:整数:=(v_res+v_fp+v_bp+v_sync);--总垂直矢量
信号h_位置:从0到h_大小的整数范围:=0;--总水平矢量
信号v_位置:整数范围0到h_大小:=0;--总垂直矢量
开始
定时:进程(时钟、h_pos、v_pos)为
开始
如果上升沿(clk),则
如果(h_pos)测试台在哪里?为了节省时间,我还没有编写测试台。我想先看看是否可以在mod sim中打开它,然后手动更改一些输入值。双重检查您是否编译了正确的文件,因为在使用vga
(vga.vhd)编译文件时,它将在ModelSim工作库中生成实体和体系结构。已选中。我的模型“vga”中编译了两个子组件“sync”和“clk25”它只有一个架构。编译后,我仍然只有vga实体以modish显示,但没有任何架构。您没有为clk25提供任何代码,因此我对该实例进行了注释。除此之外,它在Modelsim和Quartus上都运行良好。您是否尝试退出Modelsim和Quartus,删除所有生成的文件s(库、项目文件等)并重新开始?