以前在学校时曾开过EDA这门课,对VHDL也有所了解,但是没有深入进去,现在由于工作的需要俺不得不又要重新拾起它,当再重新回头看时,俺发现这VHDL也蛮好玩的,有很多功能用FPGA/CPLD实现还真的是不错的选择。现在还没有完全入门吧,所以俺现在坚持每天晚上学习VHDL,俺现在还没有能力开发VHDL,所以这周主要是研究别人的例子再加强一下VHDL的基础语法知识。
下面这个例子是俺第一天写的,呵呵,算是消化人家的吧:
--------------------------------------------------------------------------------------------
--这个是俺入门时写的程序,是从网上是某个程序改编的,人家用的是共阳,我
--用的是共阴数码管,
--作为入门嘛,俺不强求功能多强大,主要是熟悉一下编程环境
--还是以俺的格言结束:每天进步一点点,开心一大点^_^
--顺便说一下,我用的是Quartus II 7.2版本,所以不能用中文注释,我是在写字本
--上编辑好拷过来的
--功能:LED静态显示
--作者:萤火虫II号
--日期:2010.03.21
--------------------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY decoder IS ---define entity
PORT( code:in std_logic_vector(3 downto 0);
Q :out std_logic_vector(6 downto 0));
END decoder;
ARCHITECTURE Behavioral OF decoder IS
BEGIN
PROCESS(code)
BEGIN
CASE code IS
WHEN "0000" => Q<="0111111";--0
WHEN "0001" => Q<="0000110";--1
WHEN "0010" => Q<="1111101";--2
WHEN "0011" => Q<="1001111";--3
WHEN "0100" => Q<="1100110";--4
WHEN "0101" => Q<="1101110";--5
WHEN "0110" => Q<="1111110";--6
WHEN "0111" => Q<="0000111";--7
WHEN "1000" => Q<="1111111";--8
WHEN "1001" => Q<="1101111";--9
WHEN others => Q<="0000000";
END CASE;
END PROCESS;
END Behavioral;
这个例子比较简单,用的是WHEN语句,就是实现数码管静态显示,因为俺现在还没有开发板,所以只在QUARTUS II中仿真了一下,看了一下波形,还不错,波形正确,呵呵,这次的目的就是为了熟悉一下AUARTUS II的开发环境,不过说实现,写完这个程序,对于QUARTUS II的很多功能俺还是不知道,呵呵,不过俺才不怕呢,每天进步一点点,俺慢慢会把它蚕食掉的,呵呵^_^
呵呵,还是那句口号:
每天进步一点点,开心多一点^_^
用户268565 2010-4-6 16:26
用户539895 2010-3-30 22:51