【含源代码】北邮数电实验洗衣机控制器点阵动态显示VHDL报告

来源:网络收集 时间:2025-04-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

2015~2016 学年第一学期

《数字电路与逻辑设计实验(下)》实验报告

题目:基于 CPLD 的简易洗衣机控制器的设计与实现

班 级: 学 号: 班内序号: 学生姓名:

一、设计课题的任务要求

任务要求:

基本要求:

1、 基于 CPLD 的简易洗衣机控制器 的工作步骤为洗涤、漂洗和脱水三个过程,工作

时间分别为:洗涤 30 秒(进 水 5 秒,洗衣 15 秒,排水 5 秒,甩干 5 秒),漂洗 25 秒(进水 5 秒,漂洗 10 秒, 排水 5 秒,甩干 5 秒),脱水 15 秒(排水 5 秒,甩干 10 秒);

2、 用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、 漂洗和脱水;E、洗涤、漂洗和脱水全过程; 3、 用发光二极管显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态

的工作时间,全部过程结束后,应有声音提示使用者,并保持在停止状态,直至再 次开始; 4、 用点阵动画显示洗衣机工作过程中进水、波轮或滚筒转动、排水和甩干等的工作情

况,四种工作情况的动画显示要有区别且尽可能的形象。 5、 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留

的状态;

提高要求:

1、 三个过程的时间有多个选项供使用者选择。

2、 可以预约洗衣时间。

3、 自拟其它功能。

二、系统设计(包括设计思路、总体框图、分块设计)

A.设计思路:

本程序采用自顶向下的设计方法。先从所需要实现的功能入手,把整个洗衣机的程序分为分频(cp)模块,模式设置(fset)模块,控制(foption)模块和点阵模块(dianzhen)等分别实现,最后再合成一个整的程序。

B.设计过程::

1. 计算机编程:按照上述设计,用VHDL语言进行编程实现,并通过编译,观察资源使用情

况。

2. 系统仿真:通过仿真软件仿真,观察波形图,如果不对,对程序进行反复推敲修改. 3. 下载调试:将程序下载到实验板上,调试各功能看是否满足设计要求。

4. 修改程序:通过计算机仿真和下载调试,发现问题,返回原程序进行修改,再次进行下

载调试,直到成功为止。

C.总体框图:

防抖模块 时钟信号 模式设置模块 暂停模块 分频模块 控制模块 点阵模块 显示报警模块 点阵译码模块 D.状态转移图:

111[E] 100[A] 000[end/wait] 011[D] 010[B] 001[C]

E.分块设计:

分频模块:主要是从1MHZ的时钟,分出多个时钟,分别给控制器、模式选择模块(由

于设有防抖功能故需要加时钟)、数码管译码模块等其他模块用来控制显示或其他。

模式设置模块:主要功能是选择洗衣机的工作模式A ~ E。其中模式选择用按键来实现,

按键加入了防抖功能。按键一次表示A单洗涤,按键俩次表示B单漂洗,按键三次表示C单脱水,按键四次表示D漂洗+脱水,按键五次表示E洗涤+漂洗+脱水,再按键则跳回单洗涤过程,以此类推。并用3个LED灯来显示当前选择的模式。

控制模块:主要功能键开始键和暂停键,分别用来控制洗衣机相应的功能。暂停键按下,

洗衣过程暂停。洗衣完成会产生一个报警信号,蜂鸣器响起,提醒工作已经结束。

点阵模块和点阵译码模块:主要功能键为当洗衣机处于不同工作状态时,控制点阵显

示不同动画,不同动画分别对应进水、洗衣、漂洗、排水、甩干,使其工作状态一目了然。

显示模块:主要功能是译码显示洗衣机倒计时,以及将报警信号输出。 防抖模块:主要功能防止按键时模式选择混乱。

三、仿真波形及波形分析

分频模块仿真:在这里我选择了cp模块进行仿真,由于cp1中分频系数过高难以看

出准确仿真结果,我改用了较小的数字进行仿真,对代码段进行了如下修改—— IF(count=\ --49 count<=\

波形如下得到翻转后的新时钟信号:

防抖模块仿真:主要功能防止按键时模式选择混乱。波形如下所示,按下mode信号对应的按键能使mode0端口产生一个高电平脉冲,作用于控制模块。

模式设置模块仿真:模式设置模块选择洗衣机的工作模式A ~ E。输入一个时钟信号

和一个周期mode信号,能使status信号发生周期性地转移,实现洗衣机五种模式的选择。

点阵模块仿真:给一个时钟信号,当set信号分别为0000,0001,0011,0100,1111

时a0~a7分别输出对应变化的控制点阵图形的信号,不同动画分别对应进水、洗衣、漂洗、排水、甩干,使其工作状态一目了然。

四、功能说明及资源利用情况 A.功能说明:

? 下载完成后,电路板进入等待状态,点阵显示如图欢迎图像。数码管显示默认状态下洗

衣倒计时,此时可选择状态。

? 用一个按键可实现洗衣程

序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、 漂洗和脱水;E、洗涤、漂洗和脱水全过程;按一次按键实现一次相邻状态之间的转移。同时三个发光二极管亮灭分别显示不同状态。

? 拨下“开始”拨码开关

后洗衣机开始运转,数码管显示该运行状态下剩余时间。若此时按下“暂停”键,则洗衣暂停,再次按下“暂停”则洗衣继续。

? 此时点阵动态显示洗衣机的内部工作状态,进水、洗衣、漂洗、排水、甩干分别对应不

同动画。比如进水动画点阵显示是有水流灌入,洗衣机内水平面升高。

? 时间倒计归零之后,洗衣结束,点阵显示表示“OK”的动画,同时蜂鸣器警报响起。

? 由6个数码管分别显示模式选择,各种模式下时间的选择,倒计时时间。由于六个数

码管的8个输入端是并联在一起的,而其共阴极端是相互独立的。所以 采用多个数码管动态扫显示的原理和人的视觉停留误差,使扫描的频率大于50*6=300hz,循环点亮数码管,完成数码管的固定显示。

? 要求功能均已经实现。包括利用数码管来显示倒计时、模式的选择结果,利用发光二极

管指示灯来提示用户先择模式,利用点阵显示动态内部状态。

B.资源利用情况:

如下图一所示,为电路板的端口占用情况;图二为Quartus搭建的端口模拟图

五、故障及问题分析

a.

在编写模式设置模块时,起初没有考虑防抖模块的加入,导致按键不能准确选择模式,之后查找资料,加入防抖模块,成功解决该问题

b. 在起初设计的时候原想用拨码开关来实现暂停的控制,但在实践的时候发现不如按键来

的方便,思考了一下,进行了改动,后来在网上查了些资料,并加进了防抖程序,按键好用多了。

c. 点阵的动画显示也是经历了一个艰难的调试修改过程,经常显示的动画和所想的相差甚

远。最后通过向老师同学请教,查阅资料,一步步的得出了想要的结果.

六、总结和结论

其实在刚开始看到数电实验的选题时,我们小组都挺迷茫,怎么用一个小小的板子去实现一个大型家电的控制?感觉会很困难,没有头绪。加上学期只学习了简单的数电实验,只是一些比较抽象的信号处理,并没有涉及在综合性的与日常生活贴切的部分。而这次是进行复杂的综合实验设计。

我选的是常用的洗衣机。我认为洗衣机设计的难点主要是状态的设计和转移上,它有三个状态,但有5个模式,我采用循环计数的方法巧妙地将5个模式的选择用一个按键来实现。我采用3位2进制编码,分别为100,010,001,110,111来对应5个模式。开始设计时,

确实遇到了不少困难,VHDL的语法不熟练,各个模块的代码需要查阅相关资料才能顺利完成,比如说分频器,防抖模块,数码管显示模块等。我按照老师的指导,采用自顶向下的设计方法,在完成了流程图的设计后,逐步完成每个模块的代码,然后我采用元件例化的方法来将各个模块组合连接,一步步实践。

这次数电实验是我们所学数字电路的一次综合应用,不仅让我们回忆起了先前的一些知识,也督促我们去学习一些新的有关VHDL的知识,这个过程也大大锻炼了我们的学习能力。过程是复杂而艰辛的,但收益颇丰。最后真诚地感谢老师,感谢这次实验!

七、源代码【带注释】

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY washer IS PORT( modin:IN std_logic; clkin:IN std_logic; runin:IN std_logic; psin:IN std_logic;

selout:OUT std_logic_vector(6 downto 1); segout:OUT std_logic_vector(6 downto 0); o_sound:OUT std_logic;

status_out:OUT std_logic_vector(2 downto 0);

ROW : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COL : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); end;

ARCHITECTURE behave OF washer IS COMPONENT foption PORT(

cp1:IN std_logic; cp2:IN std_logic; scp:IN std_logic;

status:IN std_logic_vector(2 downto 0); run:IN std_logic; ps:IN std_logic;

sel:OUT std_logic_vector(6 downto 1); seg:OUT std_logic_vector(6 downto 0); sound:OUT std_logic;

o_status:OUT std_logic_vector(2 downto 0); dianzhen:OUT std_logic_vector(3 downto 0) );

END COMPONENT; COMPONENT fset

PORT( clk:IN std_logic; run:IN std_logic; mode:IN std_logic;

status:OUT std_logic_vector(2 downto 0) );

END COMPONENT; COMPONENT display PORT(cl:IN std_logic; run:IN std_logic; sound:IN std_logic;

s_status:IN std_logic_vector(2 downto 0); o_status:IN std_logic_vector(2 downto 0); soundout:OUT std_logic;

statusout:OUT std_logic_vector(2 downto 0) );

END COMPONENT; COMPONENT cp PORT(

clk:IN std_logic; cp1:OUT std_logic; scp:OUT std_logic );

END COMPONENT; COMPONENT cp2 PORT(

clk:IN std_logic; cp2:OUT std_logic );

END COMPONENT; COMPONENT pause

PORT( run:IN std_logic; pause:IN std_logic; ps:OUT std_logic );

END COMPONENT; COMPONENT fxiaodou

PORT( clk:IN std_logic; mode:IN std_logic; rp:IN std_logic; modeO:OUT std_logic; rpO:OUT std_logic); END COMPONENT;

COMPONENT dianzhen

PORT( clk : IN STD_LOGIC;--to cp3

set : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

a0,a1,a2,a3,a4,a5,a6,a7 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT; COMPONENT cp3

PORT( clk:IN std_logic; cp3:OUT std_logic); END COMPONENT; COMPONENT cp4

PORT( clk:IN std_logic; cp4:OUT std_logic); END COMPONENT; COMPONENT dotdecode

PORT( CLK : IN STD_LOGIC;

A0,A1,A2,A3,A4,A5,A6,A7 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); ROW : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COL : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END COMPONENT;

SIGNAL s,c1,c2,c3,c4,p0,p1,m,sc:std_logic; SIGNAL st1,st2:std_logic_vector(2 downto 0); SIGNAL d:std_logic_vector(3 downto 0);

SIGNAL a0,a1,a2,a3,a4,a5,a6,a7:std_logic_vector(7 downto 0); BEGIN u1:cp PORT MAP(clk=>clkin,cp1=>c1,scp=>sc); u2:cp2 PORT MAP(clk=>clkin,cp2=>c2); u3:fxiaodou PORT MAP(clk=>clkin,mode=>modin,rp=>psin,modeO=>m,rpO=>p0); u4:fset PORT MAP(clk=>c1,run=>runin,mode=>m,status=>st1); u5:pause PORT MAP(run=>runin,pause=>p0,ps=>p1); u6:foption PORT MAP(cp1=>c2,cp2=>c1,scp=>sc,status=>st1,run=>runin,ps=>p1,sel=>selout,seg=>segout,sound=>s,o_status=>st2,dianzhen=>d); u7:display PORT MAP(cl=>clkin,run=>runin,sound=>s,s_status=>st1,o_status=>st2,soundout=>o_sound,statusout=>status_out); u8:dianzhen PORT MAP(clk=>c3,set=>d,a0=>a0,a1=>a1,a2=>a2,a3=>a3,a4=>a4,a5=>a5,a6=>a6,a7=>a7); u9:cp3 PORT MAP(clk=>clkin,cp3=>c3); u10:cp4 PORT MAP(clk=>clkin,cp4=>c4); u11:dotdecode PORT MAP(CLK=>c4,A0=>a0,A1=>a1,A2=>a2,A3=>a3,A4=>a4,A5=>a5,A6=>a6,A7=>a7,ROW=>ROW,COL=>COL); END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY cp is PORT(

clk:IN std_logic; cp1:OUT std_logic; scp:OUT std_logic ); END;

ARCHITECTURE freq of cp IS

SIGNAL count:std_logic_vector(16 downto 1); SIGNAL c1:std_logic; SIGNAL c2:std_logic;

BEGIN

PROCESS(clk) BEGIN

IF(clk'event and clk='1')then

IF(count=\ count<=\ c1<=not c1; -- c2<=count(15);

ELSE count<=count+1; END IF; END IF; END PROCESS; cp1<=c1; scp<=c2; END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY cp2 is PORT(

clk:IN std_logic; cp2:OUT std_logic ); END;

ARCHITECTURE freq of cp2 IS

SIGNAL count:std_logic_vector(24 downto 1);

--49,9999 SIGNAL c:std_logic; BEGIN

PROCESS(clk) BEGIN

IF(clk'event and clk='1')then

IF(count=\ count<=\ c<=not c;

ELSE count<=count+1; END IF; END IF; END PROCESS; cp2<=c; END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY fxiaodou IS

PORT( clk:IN std_logic; mode:IN std_logic; rp:IN std_logic; modeO:OUT std_logic; rpO:OUT std_logic); END;

ARCHITECTURE impulse of fxiaodou IS SIGNAL cp:std_logic_vector(2 downto 1); SIGNAL jsq1:std_logic_vector(8 downto 0); SIGNAL jsq2:std_logic_vector(8 downto 0);

BEGIN

PROCESS(clk) BEGIN

IF(clk'event and clk='1')THEN IF(mode='1')THEN

IF(jsq1=\ ELSE jsq1<=jsq1+1; END IF;

IF(jsq1=\ ELSE cp(2)<='0'; END IF;

ELSE IF(jsq1=\ ELSE jsq1<=jsq1-1;

END IF; END IF;

IF(rp='1')THEN

IF(jsq2=\ ELSE jsq2<=jsq2+1; END IF;

IF(jsq2=\ ELSE cp(1)<='0'; END IF;

ELSE IF(jsq2=\ ELSE jsq2<=jsq2-1; END IF; END IF; END IF;

END PROCESS; rpO<=cp(1);

modeO<=cp(2); END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY fset IS

PORT( clk:IN std_logic; run:IN std_logic; mode:IN std_logic;

status:OUT std_logic_vector(2 downto 0) ); END;

-------------------------------------------------------- ARCHITECTURE pro of fset IS TYPE all_state IS (s1,s2,s3,s4,s5); SIGNAL state:all_state; BEGIN

PROCESS(clk,mode) BEGIN

IF(mode'event and mode='1')THEN IF(run='0')THEN CASE state IS WHEN s1=>state<=s2;status<=\ WHEN s2=>state<=s3;status<=\ WHEN s3=>state<=s4;status<=\ WHEN s4=>state<=s5;status<=\

WHEN s5=>state<=s1;status<=\ WHEN OTHERS=>state<=s5;status<=\ END CASE; END IF; END IF;

END PROCESS; END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY pause IS

PORT( run:IN std_logic; pause:IN std_logic; ps:OUT std_logic ); END;

ARCHITECTURE status of pause IS SIGNAL p:std_logic;

BEGIN

PROCESS(pause) BEGIN

IF(run='0')THEN p<='0';

ELSE IF(pause'event and pause='1')THEN--pause bottom has been pressed p<=not p;--p signal '1' END IF; END IF; END PROCESS; ps<=p; END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY foption IS PORT(

cp1:IN std_logic; cp2:IN std_logic; scp:IN std_logic;

status:IN std_logic_vector(2 downto 0); run:IN std_logic;

ps:IN std_logic;

sel:OUT std_logic_vector(6 downto 1); seg:OUT std_logic_vector(6 downto 0); sound:OUT std_logic;

o_status:OUT std_logic_vector(2 downto 0); dianzhen:OUT std_logic_vector(3 downto 0)); END;

ARCHITECTURE run of foption is

SIGNAL time1:std_logic_vector(3 downto 0); SIGNAL time2:std_logic_vector(3 downto 0); SIGNAL time0:std_logic_vector(3 downto 0); SIGNAL ts:std_logic;

SIGNAL selsig:std_logic_vector(6 downto 1); SIGNAL segsig:std_logic_vector(6 downto 0); SIGNAL s:std_logic_vector(2 downto 0); SIGNAL sds:std_logic; SIGNAL sctl:std_logic;

SIGNAL mt1:std_logic_vector(3 downto 0); SIGNAL mt2:std_logic_vector(3 downto 0); SIGNAL jsq:std_logic_vector(3 downto 0);

SIGNAL d:std_logic_vector(3 downto 0):= \

BEGIN

PROCESS(cp1) BEGIN

IF(run='0')THEN

IF(status(2)='1')THEN mt2<=\ ELSIF(status(1)='1')THEN mt2<=\ ELSIF(status(0)='1')THEN mt2<=\ END IF;

s<=status;time1<=mt1;time2<=mt2;sctl<='0';--time1 and time2 show the seg

ELSE

IF(cp1'event and cp1='1')THEN IF(ps='0')THEN

IF(s(2)='1')THEN--100/111 25s

IF(time2=\ d<=\

elsif(time2=\ d<=\

elsif(time2=\

d<=\

elsif(time2=\ d<=\

elsif(time2=\ d<=\ end if;

ELSIF(s(1)='1')THEN--010/011 30s

IF(time2=\ d<=\

elsif(time2=\ d<=\

elsif(time2=\ d<=\

elsif(time2=\ d<=\

elsif(time2=\ d<=\ end if;

ELSIF(s(0)='1')THEN--001 15s

IF(time2=\ d<=\

elsif(time2=\ d<=\

elsif(time2=\ d<=\ end if; END IF;

IF(time1=\

IF(time2=\

IF(s(2)='1')THEN s(2)<='0';

ELSE IF(s(1)='1')THEN s(1)<='0';

ELSE IF(s(0)='1')THEN s(0)<='0';

END IF;END IF;END IF;

IF((s(2)and s(1))='1')THEN time2<=\ ELSE IF((s(1)and s(0))='1')THEN time2<=\D->C 15S

ELSE time2<=\other state so the wash

is end

END IF;END IF;

ELSE time2<=time2-1; time1<=\ END IF;

ELSE time1<=time1-1; --time dec END IF; IF(s(2)='0' and s(1)='0' and s(0)='0' and sctl='1')THEN sds<=scp;jsq<=\ ELSE sds<='0';jsq<=\ END IF; IF(jsq=\ sctl<='0';jsq<=\ ELSE jsq<=jsq+1;sctl<='1'; END IF; END IF; END IF; END IF;

dianzhen <= d; END PROCESS;

------------------------------------- PROCESS(cp2) BEGIN

IF(cp2'event and cp2='1')THEN ts<=not ts;

IF(ts='0')THEN time0<=time1;selsig<=\only the lower Nixie tube light up

ELSE time0<=time2;selsig<=\ END IF; END IF; CASE time0 IS

WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\ WHEN\

WHEN OTHERS=>segsig<=\

END CASE; END PROCESS;

sel<=selsig;seg<=segsig; o_status<=s;sound<=sds;

END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY display IS

PORT(cl:IN std_logic; run:IN std_logic; sound:IN std_logic;

s_status:IN std_logic_vector(2 downto 0); o_status:IN std_logic_vector(2 downto 0); soundout:OUT std_logic;

statusout:OUT std_logic_vector(2 downto 0) ); END;

ARCHITECTURE control OF display IS

SIGNAL statussig:std_logic_vector(2 downto 0); SIGNAL soundsig:std_logic;

BEGIN

PROCESS(cl) BEGIN

IF(run='0')THEN soundsig<='0'; statussig<=s_status; ELSE

soundsig<=sound; statussig<=o_status; END IF;

soundout<=soundsig;statusout<=statussig; END PROCESS; END;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY dianzhen IS

PORT(clk : IN STD_LOGIC;--to cp3

set : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

a0,a1,a2,a3,a4,a5,a6,a7 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END dianzhen;

ARCHITECTURE dianzhen OF dianzhen IS

SIGNAL c : INTEGER RANGE 0 TO 49 := 0;

SIGNAL s : STD_LOGIC_VECTOR(3 DOWNTO 0) := \BEGIN

PROCESS(clk) BEGIN

IF (clk'EVENT AND clk = '1') THEN IF (set /= s) THEN c <= 0; s <= set; END IF; CASE set IS

WHEN \ jinshui CASE c IS

WHEN 0 => a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

a6<= \ WHEN 8 => a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

a6<= \ WHEN 16 =>a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

a6<= \

WHEN 24 =>a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

a6<= \ WHEN 32 =>a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

a6<= \ WHEN 40 =>a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

a6<= \ WHEN 49 => c <= 0;

WHEN OTHERS => c <= c + 1; END CASE;

WHEN \ CASE c IS

WHEN 8 => a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

a6<= \ WHEN 16 => a7<= \ a0<= \ a1<= \ a2<= \ a3<= \ a4<= \ a5<= \

END PROCESS; END dianzhen; LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY cp3 is PORT(

clk:IN std_logic; cp3:OUT std_logic ); END;

ARCHITECTURE freq of cp3 IS

SIGNAL count:std_logic_vector(21 downto 1); SIGNAL c1:std_logic; BEGIN

PROCESS(clk) BEGIN

IF(clk'event and clk='1')then

IF(count=\ count<=\ c1<=not c1;

ELSE count<=count+1; END IF; END IF; END PROCESS; cp3<=c1; END;

LIBRARY ieee;

USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all;

ENTITY cp4 is PORT(

clk:IN std_logic; cp4:OUT std_logic ); END;

ARCHITECTURE freq of cp4 IS

SIGNAL count:std_logic_vector(14 downto 1); SIGNAL c1:std_logic; BEGIN

PROCESS(clk) BEGIN

IF(clk'event and clk='1')then

IF(count=\ count<=\ c1<=not c1;

ELSE count<=count+1; END IF; END IF; END PROCESS; cp4<=c1; END;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY dotdecode IS

PORT(CLK : IN STD_LOGIC;

A0,A1,A2,A3,A4,A5,A6,A7 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); ROW : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COL : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END;

ARCHITECTURE decode OF dotdecode IS

SIGNAL clk_temp : INTEGER RANGE 0 TO 7;

SIGNAL col_temp : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(CLK) BEGIN

IF (CLK'EVENT AND CLK = '1') THEN CASE clk_temp IS

WHEN 0 => ROW <= \ WHEN 1 => ROW <= \ WHEN 2 => ROW <= \ WHEN 3 => ROW <= \ WHEN 4 => ROW <= \ WHEN 5 => ROW <= \ WHEN 6 => ROW <= \ WHEN 7 => ROW <= \ END CASE;

COL(0) <= col_temp(7); COL(1) <= col_temp(6); COL(2) <= col_temp(5);

COL(3) <= col_temp(4); COL(4) <= col_temp(3); COL(5) <= col_temp(2); COL(6) <= col_temp(1); COL(7) <= col_temp(0); END IF; END PROCESS; END;

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库【含源代码】北邮数电实验洗衣机控制器点阵动态显示VHDL报告在线全文阅读。

【含源代码】北邮数电实验洗衣机控制器点阵动态显示VHDL报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/188793.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219