(2) 循环左滚动:输入信号为clk,clear。Clear为异步复位信号,Clk接外部
时钟,该时钟共有4种频率(可以通过改变粉红色按钮上的小拨码开关
调整),为了使实验现象符合要求,我们可以选择最高频率并对它进行分频,分出我们所需要的合适的频率,再由分频器输出的信号控制状态变化,每来一个时钟改变一次状态,xuan和guan为输出信号,分别控制该时刻应该亮哪个数码管和这个数码管上每条线的亮与灭状态。故clk接实验板上18,clear可由按键实现,xuan接实验板上cat(0~5)guan接数码管上每条线所对应的数字。小周期计数器控制每位数码的显示,大
周期计数器控制数码的移位。
(3) clk为输入信号,接外部时钟实验板上18,通过循环移位及每来一个cp
对xuan进行一次赋值,选择此时该亮的灯。通过改变输出guan和xuan,从而得出能熄灭能亮的现象。guan接数码管上的每条线所对应位置,xuan接六个数码管的cat端
六. 实验原理图或者VHDL代码:
(1) 实验一(2):
其中半加器ba的原理图如下所示:
(2) 实验三(3)VHDL代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sange IS PORT(
clk:IN STD_LOGIC;
clear,clearyibu:IN STD_LOGIC;
b:OUT STD_LOGIC_VECTOR(6 downto 0); y2,y3,y4,y5,y6,y7:OUT STD_LOGIC ); end sange;
ARCHITECTURE a OF sange IS component fenpin PORT(
clk:IN STD_LOGIC;
clear:IN STD_LOGIC; clk_out:OUT STD_LOGIC );
END component;
component yibu PORT(
cp,clear:IN STD_LOGIC;
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );
END component; component seg7_1 PORT(
a:IN STD_LOGIC_VECTOR (3 downto 0); b:OUT STD_LOGIC_VECTOR(6 downto 0); c,d,e,f,g,h:OUT STD_LOGIC );
END component; SIGNAL na:STD_LOGIC;
SIGNAL nb:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
u1:fenpin PORT MAP(clk=>clk,clear=>clear,clk_out=>na); u2:yibu PORT MAP(cp=>na,clear=>clearyibu,q=>nb);
u3:seg7_1 PORT MAP(a=>nb,b=>b,c=>y2,d=>y3,e=>y4,f=>y5,g=>y6,h=>y7); END a;
其中fenpin,yibu,seg7_1的VHDL代码如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpin IS PORT(
clk:IN STD_LOGIC; clear:IN STD_LOGIC; clk_out:OUT STD_LOGIC ); END fenpin;
ARCHITECTURE a OF fenpin IS
SIGNAL tmp:INTEGER RANGE 0 TO 5; SIGNAL clktmp: STD_LOGIC; BEGIN
PROCESS(clear,clk) BEGIN
IF clear='0' THEN tmp<=0;
ELSIF (clk'event and clk='1') THEN IF tmp=5 THEN
tmp<=0; clktmp<=NOT clktmp; ELSE tmp<=tmp+1; END IF; END IF;
END PROCESS; clk_out<=clktmp; END a;