ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:125.04KB ,
资源ID:11721951      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11721951.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(CPLD课程设计代码.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

CPLD课程设计代码.doc

1、 附:程序代码 注:译码器,分频,点阵,流水灯,步进电机五部分为源代码的功能拓展,带下划线部分为修改或添加的代码。 交通灯,多路选择器为编写设计代码。 1、译码器: LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY decoder3_8 IS PORT( A,B,C: IN STD_LOGIC; Y :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --段选输出 en :OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); --位

2、选输出 END decoder3_8; ARCHITECTURE fun OF decoder3_8 IS SIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0) ; BEGIN indata <=C&B&A; encoder: PROCESS(indata ) BEGIN CASE indata IS WHEN "000"=>Y<="01000000";en<="00000001"; WHEN "001"=>Y<="01111001";en<="00000010";

3、 WHEN "010"=>Y<="00100100";en<="00000100"; WHEN "011"=>Y<="00110000";en<="00001000"; WHEN "100"=>Y<="00011001";en<="00010000"; WHEN "101"=>Y<="00010010";en<="00100000"; WHEN "110"=>Y<="00000010";en<="01000000"; WHEN "111"=>Y<="01111000";en<="10000000";

4、 WHEN OTHERS=>Y<="11111111";en<="00000000"; END CASE; END PROCESS encoder; END fun; 2、分频: library ieee; use ieee.std_logic_1164.all; entity div_f is port(clk :in std_logic; miao_out :out std_logic; f_miao_out:out std_logic; fourhz :out std_logic; -- 4Hz 输

5、出 halfhz :out std_logic; --0.5Hz输出 en :out std_logic); end div_f; architecture miao of div_f is begin en<='1'; p1:process(clk) variable cnt:integer range 0 to 3999999; variable ff:std_logic; begin if clk'event and clk='1' then if cnt<3999999 then cnt:=cnt+1; else c

6、nt:=0; ff:=not ff; end if; end if; miao_out<=ff; end process p1; p2:process(clk) variable cnn:integer range 0 to 1999999; variable dd:std_logic; begin if clk'event and clk='1' then if cnn<1999999 then cnn:=cnn+1; else cnn:=0; dd:=not dd; end if; end if; f_miao_out<=dd; end process

7、 p2; ------------p3:4Hz生成部分-------------- p3:process(clk) variable cnt0:integer range 0 to 999999; variable aa:std_logic; begin if clk'event and clk='1' then if cnt0<999999 then cnt0:=cnt0+1; else cnt0:=0; aa:=not aa; end if; end if; fourhz<=aa; end process p3; --------p4:0.5Hz生成部分--

8、 p4:process(clk) variable cnn0:integer range 0 to 7999999; variable bb:std_logic; begin if clk'event and clk='1' then if cnn0<7999999 then cnn0:=cnn0+1; else cnn0:=0; bb:=not bb; end if; end if; halfhz<=bb; end process p4; end miao; 3、 点阵 library IEEE; use IEEE.STD_LOG

9、IC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY dianzhen IS PORT(clk:IN STD_LOGIC; l : out STD_LOGIC_VECTOR(7 downto 0); b : out STD_LOGIC_VECTOR(7 downto 0) ); END dianzhen; ARCHITECTURE led OF dianzhen IS signal clk_1k:std_logic;

10、 signal clk_1h:std_logic; signal p,c:integer range 0 to 7; BEGIN -------------与源代码分频方式不同,效果相同----------- process(clk) variable cnt0:integer range 0 to 24676; begin if clk'event and clk='1'then if cnt0=24676 then cnt0:=0; clk_1k<=not clk_1k; else cnt0:=cnt0+1; end if; end if; end proc

11、ess; process(p,clk_1k) FUNCTION word(bcd8421:INTEGER RANGE 0 TO 7)RETURN STD_LOGIC_VECTOR IS VARIABLE smg7:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN CASE bcd8421 IS --------实现汉字“中”的编码-------- WHEN 0=>smg7:=X"00"; WHEN 1=>smg7:=X"1C"; WHEN 2=>smg7:=X"14"; WHEN 3=>smg7:=X"FF"; WHEN 4=>smg7:

12、X"14"; WHEN 5=>smg7:=X"1C"; WHEN 6=>smg7:=X"00"; WHEN 7=>smg7:=X"00"; END CASE; RETURN smg7; END word; variable cnt:integer range 0 to 63; begin if clk_1k'event and clk_1k='1' then p<=p+1; if cnt=63 then cnt:=0; clk_1h<=not clk_1h; else cnt:=cnt+1; end if; end if; case p is when

13、0=>b<="11111110";l<=word(c); when 1=>b<="11111101";l<=word(c+1); when 2=>b<="11111011";l<=word(c+2); when 3=>b<="11110111";l<=word(c+3); when 4=>b<="11101111";l<=word(c+4); when 5=>b<="11011111";l<=word(c+5); when 6=>b<="10111111";l<=word(c+6); when 7=>b<="01111111";l<=word(c+7); end case;

14、end process; process(clk_1h) variable cnt:integer range 0 to 7; begin if clk_1h'event and clk_1h='1'then c<=c+1; end if; end process; end led; 4、流水灯: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY led_lsd IS PORT(clk:IN STD_LOGIC; -----------

15、 spd:in bit;---控制速度---- con:in bit;---控制方向---- r:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ---点阵行控制 c:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --点阵列控制 ----------------------- END led_lsd; ARCHITECTURE behav OF led_lsd IS SIGNAL SLIP :STD_LOGIC_VECTOR(5

16、DOWNTO 0);-------- SIGNAL miao_out:STD_LOGIC; begin -----------------分出两个不同的频率----------- process(clk) variable cnt:integer range 0 to 399999; variable ff:std_logic; variable cnt0:integer range 0 to 1000000; variable ff0:std_logic; begin if clk'event and clk='1' then if cnt<3999

17、99 then cnt:=cnt+1; else cnt:=0; ff:=not ff; end if; if cnt0<1000000 then cnt0:=cnt0+1; else cnt0:=0; ff0:=not ff0; end if; end if; -------速度选择-------- if(spd='1')then miao_out<=not ff; elsif(spd='0')then miao_out<=not ff0; end if;

18、end process; ----------------------------------------------------- PROCESS(miao_out) BEGIN IF miao_out'EVENT AND miao_out='1'THEN -----------方向选择控制-------------------------- if(con='1')then SLIP<=SLIP+1; elsif(con='0')then SLIP<=SLIP-1; end if; --------------------------------------

19、 END IF; CASE SLIP IS ----------------实现LED点阵流水点灯的样式--------- WHEN"000000"=>r<="00000011";c<="11111110"; WHEN"000001"=>r<="00000011";c<="11111101"; WHEN"000010"=>r<="00000011";c<="11111011"; WHEN"000011"=>r<="00000011";c<="11110111"; WHEN"000100"=>r<="00000011";c<="11101111"; WHEN"000101"=

20、>r<="00000011";c<="11011111"; WHEN"000110"=>r<="00000011";c<="10111111"; WHEN"000111"=>r<="00000001";c<="01111111"; WHEN"001000"=>r<="00000010";c<="00111111"; WHEN"001001"=>r<="00000100";c<="00111111"; WHEN"001010"=>r<="00001000";c<="00111111"; WHEN"001011"=>r<="00010000";c<="00111111"; WHEN"

21、001100"=>r<="00100000";c<="00111111"; WHEN"001101"=>r<="01000000";c<="00111111"; WHEN"001110"=>r<="10000000";c<="01111111"; WHEN"001111"=>r<="11000000";c<="10111111"; WHEN"010000"=>r<="11000000";c<="11011111"; WHEN"010001"=>r<="11000000";c<="11101111"; WHEN"010010"=>r<="11000000";c<="11110111"

22、 WHEN"010011"=>r<="11000000";c<="11111011"; WHEN"010100"=>r<="11000000";c<="11111101"; WHEN"010101"=>r<="10000000";c<="11111110"; WHEN"010110"=>r<="01000000";c<="11111100"; WHEN"010111"=>r<="00100000";c<="11111100"; WHEN"011000"=>r<="00010000";c<="11111100"; WHEN"011001"=>r<="00001000";c<="1

23、1111100"; WHEN"011010"=>r<="00000100";c<="11111100"; WHEN"011011"=>r<="00000010";c<="11111100"; WHEN"011100"=>r<="00000001";c<="11111110"; WHEN"011101"=>r<="11011011";c<="00100100"; WHEN"011110"=>r<="00000000";c<="11111111"; WHEN"011111"=>r<="11011011";c<="00100100"; WHEN"100000"=>r<="0000000

24、1";c<="11111100"; WHEN"100001"=>r<="00000010";c<="11111100"; WHEN"100010"=>r<="00000100";c<="11111100"; WHEN"100011"=>r<="00001000";c<="11111100"; WHEN"100100"=>r<="00010000";c<="11111100"; WHEN"100101"=>r<="00100000";c<="11111100"; WHEN"100110"=>r<="01000000";c<="11111100"; WHEN"100111"=>r<=

25、"10000000";c<="11111110"; WHEN"101000"=>r<="11000000";c<="11111101"; WHEN"101001"=>r<="11000000";c<="11111011"; WHEN"101010"=>r<="11000000";c<="11110111"; WHEN"101011"=>r<="11000000";c<="11101111"; WHEN"101100"=>r<="11000000";c<="11011111"; WHEN"101101"=>r<="11000000";c<="10111111"; WHEN"1011

26、10"=>r<="10000000";c<="01111111"; WHEN"101111"=>r<="01000000";c<="00111111"; WHEN"110000"=>r<="00100000";c<="00111111"; WHEN"110001"=>r<="00010000";c<="00111111"; WHEN"110010"=>r<="00001000";c<="00111111"; WHEN"110011"=>r<="00000100";c<="00111111"; WHEN"110100"=>r<="00000010";c<="00111111"; W

27、HEN"110101"=>r<="00000001";c<="01111111"; WHEN"110110"=>r<="00000011";c<="10111111"; WHEN"110111"=>r<="00000011";c<="11011111"; WHEN"111000"=>r<="00000011";c<="11101111"; WHEN"111001"=>r<="00000011";c<="11110111"; WHEN"111010"=>r<="00000011";c<="11111011"; WHEN"111011"=>r<="00000011";c<="11111

28、101"; WHEN"111100"=>r<="00000011";c<="11111101"; WHEN"111101"=>r<="11100111";c<="00011000"; WHEN"111110"=>r<="00000000";c<="11111111"; WHEN"111111"=>r<="11100111";c<="00011000"; ----------------------------------------- END CASE; END PROCESS; END behav; 5、 步进电机: library IEEE; use IEEE.S

29、TD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY state_machine IS PORT ( clk :IN std_logic; rst :IN std_logic; spd :in bit;---速度控制--- con :in bit;---方向控制------ c :OUT std_logic_vector(3DOWNTO 0)); END state_machine;

30、 ARCHITECTURE arch OF state_machine IS CONSTANT state0 : std_logic_vector(2 DOWNTO 0):="000"; CONSTANT state1 : std_logic_vector(2 DOWNTO 0):="001"; CONSTANT state2 : std_logic_vector(2 DOWNTO 0):="010"; CONSTANT state3 : std_logic_vector(2 DOWNTO 0):="011"; CONSTANT state4 : std_logic_v

31、ector(2 DOWNTO 0):="100"; CONSTANT state5 : std_logic_vector(2 DOWNTO 0):="101"; CONSTANT state6 : std_logic_vector(2 DOWNTO 0):="110"; CONSTANT state7 : std_logic_vector(2 DOWNTO 0):="111"; SIGNAL state :std_logic_vector(2 DOWNTO 0); SIGNAL KEY :std_logic_vector(2 DOWNTO 0); BEGIN

32、 PROCESS(clk,rst) ----实现两个分频---------- variable cnt:integer range 0 to 5999;---------- variable cnt0:integer range 0 to 9999;-------------- variable ff:std_logic; BEGIN IF(NOT rst='1')THEN state<=state0; cnt:=0; cnt0:=0; ELSIF(clk'EVENT AND clk='1'

33、)THEN cnt:=cnt+1; cnt0:=cnt0+1;----- -------根据spd的值实现速度的选择----------------------- if(spd='1')then IF(cnt=5999)THEN CASE state IS WHEN state0=> state<=state1; WHEN state1=> state<=s

34、tate2; WHEN state2=> state<=state3; WHEN state3=> state<=state4; WHEN state4=> state<=state5; WHEN state5=> state<=state6; WHEN state6=>

35、 state<=state7; WHEN state7=> state<=state0; END CASE; END IF; elsif(spd='0')then IF(cnt0=9999)THEN CASE state IS WHEN state0=> state<=state1; WHEN state1=>

36、 state<=state2; WHEN state2=> state<=state3; WHEN state3=> state<=state4; WHEN state4=> state<=state5; WHEN state5=> state<=state6; WHEN state6=

37、> state<=state7; WHEN state7=> state<=state0; END CASE; END IF; end if; -------------- END IF; END PROCESS; PROCESS(state) BEGIN -----根据con的值实现转向控制-------------- if(con='1')then CASE state

38、 IS WHEN state0=> c<="1001"; WHEN state1=> c<="0001"; WHEN state2=> c<="0011"; WHEN state3=> c<="0010"; WHEN state4=> c<="0110"; WHEN state5=> c<="0100"; WHEN state6=>

39、 c<="1100"; WHEN state7=> c<="1000"; WHEN OTHERS=> NULL; END CASE; elsif(con='0')then CASE state IS WHEN state0=> c<="1000"; WHEN state1=> c<="1100"; WHEN state2=> c<="0100"; WHEN state

40、3=> c<="0110"; WHEN state4=> c<="0010"; WHEN state5=> c<="0011"; WHEN state6=> c<="0001"; WHEN state7=> c<="1001"; WHEN OTHERS=> NULL; END CASE; end if; --------------------------

41、 END PROCESS; END arch; 6、 多路选择器(四选一): library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity selc is port( a,b,c,d:in bit;--四路信号-- s:in std_logic_vector( 1 downto 0 );---选择信号--- data:out std_logic_vector( 7 dow

42、nto 0 );---数码管段选 en:out std_logic_vector( 3 downto 0 ));---------位选--- end selc; architecture chose of selc is signal s0:bit; begin process(a,b,c,d,s) begin if(s="00")then s0<=d; case s0 is when '1'=>data<="11111001";en<="0001"; when '0'=>data<="11000000";en<="0001"; end case; el

43、sif(s="01")then s0<=c; case s0 is when '1'=>data<="11111001";en<="0010"; when '0'=>data<="11000000";en<="0010"; end case; elsif(s="10")then s0<=b; case s0 is when '1'=>data<="11111001";en<="0100"; when '0'=>data<="11000000";en<="0100"; end case; elsif(s="11")then s0<=a; case s0 is whe

44、n '1'=>data<="11111001";en<="1000"; when '0'=>data<="11000000";en<="1000"; end case; end if; end process; end chose; 7、 交通灯: 顶层文件(交通灯总模块): library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity jiaotongdeng is port(clk1:in std_

45、logic; rst:in std_logic; con1:in std_logic;---紧急控制,实现全红灯-- segout2:out std_logic_vector(7 downto 0);---段选 led_sel1:out std_logic_vector(7 downto 0);---位选 r1,y1,g1,ryg10:out std_logic;------led红黄绿 ryg20,ryg30,ryg40:out std_logic);----灯控制 end jiaotongdeng; archite

46、cture behavioral of jiaotongdeng is component div_f port (clk:in std_logic; rst:in std_logic; clkout:out std_logic); end component; component controller port (Clock:in std_logic; con:in std_logic; CountNum:in integer range 0 to 22; NumA:out integer range

47、0 to 22; r,y,g,ryg1:out std_logic; ryg2,ryg3,ryg4:out std_logic); end component; component counter port(clock:in std_logic; con:in std_logic; countnum:buffer integer range 0 to 22); end component; component fenwei port(Numin:integer range 0 to 22; NumA,N

48、umB:out integer range 0 to 9); end component; component scan port(clk:in std_logic; NumA,NumB:in integer range 0 to 9; segout1:out std_logic_vector(7 downto 0); led_sel:out std_logic_vector(7 downto 0)); end component; signal b,rst1:std_logic; signal c:integer range

49、 0 to 22; signal d:integer range 0 to 22; signal e,f:integer range 0 to 9; begin u1:div_f port map(clk=>clk1,rst=>rst,clkout=>b); u2:counter port map(clock=>b,con=>con1,countnum=>c); u3:controller port map(Clock=>b,con=>con1,CountNum=>c,NumA=>d,r=>r1,y=>y1, g=>g1,ryg1=

50、>ryg10,ryg2=>ryg20,ryg3=>ryg30,ryg4=>ryg40); u4:fenwei port map(Numin=>d,NumA=>e,NumB=>f); u5:scan port map(clk=>clk1,NumA=>e,NumB=>f,segout1=>segout2,led_sel=>led_sel1); end behavioral; 底层文件 分频模块: library ieee; use ieee.std_logic_1164.all; entity div_f is port(clk :in std_logic;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服