hjind 发表于 2010-11-15 13:12:03

请教关于vhdl进程的问题

下面是个3-8译码器的vhdl程序。
library ieee;
use ieee.std_logic_1164.all;
entity decoder is
port (sel:in std_logic_vector(2 downto 0);
enable :std_logic;
y:out std_logic_vector(7 downto 0));
end decoder;
architecture rt1 of decoder is
signal clk:bit :='0';
begin
process (clk)
begin
y<="11111111";
if enable='1' then
case sel is
when "000"=>y(0)<='0';
when "001"=>y(1)<='0';
when "010"=>y(2)<='0';
when "011"=>y(3)<='0';
when "100"=>y(4)<='0';
when "101"=>y(5)<='0';
when "110"=>y(6)<='0';
when "111"=>y(7)<='0';
end case;
end if;
end process;
end rt1;
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_598058FLX3P4.jpg
功能仿真图 (原文件名:viewfile.jpg)
功能仿真表明译码功能是可以实现的,我不能理解的是,我们所说的进程只有在 敏感信号发生变化时才被触发的,而这个例子中的敏感信号在开始就已经赋初值了,那么它为什么还能触发进程的执行呢?是否说这个赋初值语句本身就在不断地刷新呢?谢谢~

40130064 发表于 2010-11-15 13:26:36

加个初始值仿真

nathenlu 发表于 2010-11-19 21:39:33

仿真的时候,进程会先跑一次,赋初值,然后直到敏感信号触发进程。
页: [1]
查看完整版本: 请教关于vhdl进程的问题