请帮我注释这个VHDL程序
发布网友
发布时间:2023-04-28 02:54
我来回答
共2个回答
热心网友
时间:2023-10-25 21:23
ibrary ieee ; ///库头文件,每个VHDL程序都要加的
use ieee.std_logic_1164.all; /////用了标准逻辑的IEEE第1164号文件,这个文件包括了VHDL中的经常用的许多东西,几乎都要加的
entity mylight is /////定义了实体为 MYLIGHT
port (start : in std_logic; /////定义START为标准的逻辑输入信号
stop : in std_logic; /////定义stop为标准的逻辑输入信号
clk:in std_logic; //////定义clk为标准的逻辑输入信号
shift_left : in std_logic; //////定义shift_left为标准的逻辑输入信号
Q : out std_logic_vector(7 downto 0)
//////定义Q 为7到0的标准的逻辑位矢量
);
end mylight; //////结束实体
architecture behavior of mylight is /////定义了实体的一个结构体为 behavior
signal lights : std_logic_vector(7 downto 0); //////定义signal lights 为7到0的标准的逻辑位矢量
begin /////开始
process(clk, start, stop, shift_left) /////执行过程程序,形式参数为(clk, start, stop, shift_left)
begin /////开始
if (start = '0' or stop = '1') then lights <= (others => '1');
/////如果start = '0'或者stop = '1'成立,则进入后面的语句块执行others => '1'赋值给lights
elsif (clk'event and clk = '1') /////如果上述的条件都不成立则执行CLK作为事件信号置1
then /////然后接着执行下面的程序
if (shift_left = '1') /////如果shift_left = '1'成立
then /////接着执行下面的程序
lights <= lights(6 downto 0) & '0'; /////将位矢量lights(6 downto 0)的值与0相与赋值给lights
else lights <= '0' & lights(7 downto 1); ///// 如果shift_left = '1'不成立,将0'& lights(7 downto 1)值赋给lights
end if; /////结束内IF的条件判断语句
end if; /////结束外IF的条件判断语句
end process; /////结束过程
Q <= lights; /////将lights位矢量的值赋给位矢量Q
end behavior; /////结束 behavior实体
以上只是我在自己专业知识基础上的解答。。有不好的地方请高手指点
祝你好运~~~~~
热心网友
时间:2023-10-25 21:24
if(clk'event
and
clk='1')then
--当clk来上升沿脉冲,
if(stop='0')then
--且stop为0时,
chf:=0;
--chf置0,
num:=0;
--num置0,
b:='1';
--b置1,
aa:=0;
--aa置0,
lc:=0;
--lc置0,
elsif(start='0')then
--如果stop为1(clk有上升沿),start为
b:='0';
--0时,b置0,
chf:=700;
--chf置为700,
lc:=0;
--lc置0,
elsif(start='1'
and
js='1'and
pause='1')then
--如果stop为1(clk有上升
if(b='0')then
--沿),start为1,且js为1,pause为1时,
num:=num+1;
--如果b为0,则num自加1,
end
if;
--结束。