quartus仿真问题,
时间:10-02
整理:3721RD
点击:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity LCD1602 is
Port (
CLK : in std_logic;
Reset : in std_logic;
LCD_RS : out std_logic;
LCD_RW : out std_logic;
LCD_EN : out std_logic;
data : out std_logic_vector(3 downto 0));
end LCD1602;
architecture Behavioral of LCD1602 is
type iState is (
Write_instr, --写命令字
Write_DataUP4_1, --写LCD一线高4位
Write_DataDown4_1, --写LCD一线低4位
Set_DDRamAddUp, --设置DDRam地址高4位
Set_DDRamAddDown, --设置DDRam地址低4位
Write_DataUP4_2, --写LCD二线高4位
Write_DataDown4_2 --写LCD二线低4位
);
signal State:iState;
type Ram is array(0 to 15) of std_logic_vector(7 downto 0);
constant MyRamUp:Ram:=(x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"42",x"42",x"42");
--AAAAAAAABBB
constant MyRamDown:Ram:=(x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"41",x"41",x"41",x"41");
--BBBBBBBBBBAAAA
signal LCD_Clk : std_logic :='0';
signal datacnt : integer range 0 to 15:=0;
begin
LCD_RW --写命令字到LCD控制器
LCD_RS 功能设置
data 模式设定
data 显示设定
data 00H 设定读写地址位
data
LCD_RS
if datacnt=15 then
data --0xc0 : 1100 0000=>40H 设定读写地址位
LCD_RS
data
LCD_RS
if datacnt=15 then
data
state<=Write_instr;
end case;
end if;
end process;
end Behavioral;
仿真不出结果,有人用这个程序弄出来了,我没弄出来
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity LCD1602 is
Port (
CLK : in std_logic;
Reset : in std_logic;
LCD_RS : out std_logic;
LCD_RW : out std_logic;
LCD_EN : out std_logic;
data : out std_logic_vector(3 downto 0));
end LCD1602;
architecture Behavioral of LCD1602 is
type iState is (
Write_instr, --写命令字
Write_DataUP4_1, --写LCD一线高4位
Write_DataDown4_1, --写LCD一线低4位
Set_DDRamAddUp, --设置DDRam地址高4位
Set_DDRamAddDown, --设置DDRam地址低4位
Write_DataUP4_2, --写LCD二线高4位
Write_DataDown4_2 --写LCD二线低4位
);
signal State:iState;
type Ram is array(0 to 15) of std_logic_vector(7 downto 0);
constant MyRamUp:Ram:=(x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"41",x"42",x"42",x"42");
--AAAAAAAABBB
constant MyRamDown:Ram:=(x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"42",x"41",x"41",x"41",x"41");
--BBBBBBBBBBAAAA
signal LCD_Clk : std_logic :='0';
signal datacnt : integer range 0 to 15:=0;
begin
LCD_RW --写命令字到LCD控制器
LCD_RS 功能设置
data 模式设定
data 显示设定
data 00H 设定读写地址位
data
LCD_RS
if datacnt=15 then
data --0xc0 : 1100 0000=>40H 设定读写地址位
LCD_RS
data
LCD_RS
if datacnt=15 then
data
state<=Write_instr;
end case;
end if;
end process;
end Behavioral;
仿真不出结果,有人用这个程序弄出来了,我没弄出来
小编首先得有激励文件啊,就是写一个Testbench文件来给你的Entity产生激励,看输出响应,你所说的仿真不出结果是指什么呢?
输入的激励有点小问题,没输出常见可能有二:1,复位信号的时间小于一个时钟周期
2,时序不对,因为你第一个进程产生敏感信号驱动下面两个进程,你给的激励永远不会触发后面两个进程
输入没有激励信号 怎么会有输出呢?