EDA第二次实验报告
四、源程序 library ieee;
use ieee.std_logic_1164.all; entity lsh is
port(clr,clk,load,updown:in std_logic; d:in integer range 0 to 15; count:out std_logic;
q:buffer integer range 0 to 15); end lsh;
architecture one of lsh is begin
process(clk,clr,d,load,updown) begin
if clr='0'then q<=0;
elsif(clk'event and clk='1')then
if load='1'then q<=d; elsif updown='0'then q<=q+1;
if q=15 then count<='1';end if;
else q<=q-1;
if q=0 then count<='0';end if;
16
EDA第二次实验报告
end if;
end if;
end process; end one;
五、仿真波形
使能端clr为0时,输出始终为0
17
EDA第二次实验报告
使能端为1,置数load=1时,在脉冲的作用下,输出q=输入
d
使能端为1,置数load=0时,实现如图所示计数功能 六、实验中遇到的问题及解决步骤
问题:编写程序时,由于过多使用elsif等语句,导致编写的逻辑有点不太清晰,end if 语句有时候没有一一对应清楚,在编译时出现错误。
解决方法:尝试过过取消elsif语句,把所有的情况都用if列些出来,虽然程序逻辑上不会混乱,但是程序显得比较冗长,为了使程序更精练,我们调整了程序的结构,让end if与相应的if语句对其,让程序读起来更有逻辑性,条理性。
18