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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7006752.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。

注意事项

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

EDA程序终极汇总(修订后).doc

1、2009年EDA考试程序汇总(终极版) 信息工程学院2009年EDA考试 程序汇总(终极版) 制作人:柳阳 2009年6月23日 说明 1. 所有程序均来自上课及实验,无压题之意; 2. 所有程序均通过编译,波形仿真请自己完成; 3. 文字部分由于时间较紧,可能会有错误,望见谅; 4. 特别感谢王敏聪同学在程序方面给予的指导和帮助。 1.组合逻辑电路: (1)半加器与全加器(原理图以及VHDL语言) A.半加器 输入:2个二进制1位 输出:和输出S,进位Co 真值表

2、 A B S Co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY HALFADD IS PORT( A,B: IN STD_LOGIC; S,Co: OUT STD_LOGIC ); END HALFADD; ARCHITECTURE RTL OF HALFADD IS BEGIN S <= A XOR B; Co <= A AND B; END RTL; 原理图: B.全加器 输入:2个二

3、进制1位,一个进位输入Ci 输出:和输出S,进位Co 真值表: A B Ci S Co 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FULLADD IS PORT( A,B,Ci: IN STD_LOGIC; S,Co: OUT STD_LOGIC ); END

4、FULLADD; ARCHITECTURE RTL OF FULLADD IS COMPONENT HALFADD PORT(A: IN STD_LOGIC; B: IN STD_LOGIC; S: OUT STD_LOGIC; Co: OUT STD_LOGIC); END COMPONENT; SIGNAL T1,T2,T3: STD_LOGIC; BEGIN U1: HALFADD PORT MAP( A=>A,B=>B,S=>T1,CO=>T2); U2: HALFADD PORT MAP( A=>CI,B=>T1,S=>S,CO=>T3); Co <= T2

5、OR T3; END RTL; 原理图: A.分层开发 B.单层开发(课本P114) (2)全减器(原理图以及VHDL语言) 输入:2个二进制1位,一个借位输入Ci 输出:差输出S,借位Co 真值表: A B Ci S Co 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

6、 ENTITY FULL_SUBB IS PORT( A,B,CI:IN STD_LOGIC; S,CO:OUT STD_LOGIC ); END FULL_SUBB; ARCHITECTURE RTL OF FULL_SUBB IS SIGNAL NA:STD_LOGIC; BEGIN NA<=NOT A; S<=A XOR B XOR CI; CO<=(NA AND CI) OR (B AND CI) OR (NA AND B); END RTL; 原理图: (3) 译码器 (以下程序均非译码器程序,具体译码器程序可参照数字钟4-7译码

7、器程序) A.2-4译码器 输入端口:2个二进制输入端a、b 输入端口:1个使能控制信号en 输出端口:4个译码输出端y0 — y3 真值表: 输入 输出 EN A B Y3 Y2 Y1 Y0 0 × × Z Z Z Z 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 程序:(程序为四选一选择器,真值表及原理图为2-4译码器) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY

8、MUX4 IS PORT( Y0,Y1,Y2,Y3,A,B,EN:IN STD_LOGIC; Q:OUT STD_LOGIC ); END MUX4; ARCHITECTURE RTL OF MUX4 IS SIGNAL SEL:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN SEL<=A & B; PROCESS(SEL) BEGIN IF EN='0' THEN Q<='Z'; ELSE IF SEL="00" THEN Q<=Y0; ELSIF SEL="01" THEN Q<=Y1; EL

9、SIF SEL="10" THEN Q<=Y2; ELSIF SEL="11" THEN Q<=Y3; END IF; END IF; END PROCESS; END RTL; 原理图: B.3-8译码器(程序为八选一选择器,真值表及原理图为3-8译码器) 输入端口:3个二进制输入端T0,T1,T2 输入端口:1个使能控制信号EN 输出端口:4个译码输出端A0 — A7 真值表: 输入 输出 EN T2 T1 T0 A7 A6 A5 A4 A3 A2 A1 A0 0 × × × Z Z Z Z Z Z

10、 Z Z 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 程序:

11、LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX8 IS PORT( A0,A1,A2,A3,A4,A5,A6,A7:IN STD_LOGIC_VECTOR(7 DOWNTO 0); T0,T1,T2,EN:IN STD_LOGIC; Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END MUX8; ARCHITECTURE RTL OF MUX8 IS SIGNAL SEL:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN SEL<=T2&T1&T0; PROC

12、ESS(SEL) BEGIN IF EN='0' THEN Y <= "ZZZZZZZZ"; ELSE IF SEL="000" THEN Y<=A0; ELSIF SEL="001" THEN Y<=A1; ELSIF SEL="010" THEN Y<=A2; ELSIF SEL="011" THEN Y<=A3; ELSIF SEL="100" THEN Y<=A4; ELSIF SEL="101" THEN Y<=A5; ELSIF SEL="110" THEN Y<=A6; ELSIF SEL="111" THEN Y<

13、A7; END IF; END IF; END PROCESS; END RTL; (4)编码器 A.优先编码器(8-3) 真值表: 输入 输出 S D0 D1 D2 D3 D4 D5 D6 D7 Q2 Q1 Q0 Gs E0 1 × × × × × × × × 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 × × × × × × × 0 0 0 0 0 1 0 × × × × × × 0 1 0 0

14、 1 0 1 0 × × × × × 0 1 1 0 1 0 0 1 0 × × × × 0 1 1 1 0 1 1 0 1 0 × × × 0 1 1 1 1 1 0 0 0 1 0 × × 0 1 1 1 1 1 1 0 1 0 1 0 × 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 程序:(真值表为优先编码器真值表,程序为普通编码器程序) LIBRARY

15、IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY i_encoder IS PORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S: IN STD_LOGIC; Gs,E0: OUT STD_LOGIC; Q: OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END i_encoder ; ARCHITECTURE RTL OF i_encoder IS BEGIN PROCESS(S,D) BEGIN IF (

16、S='1') THEN q <= "111";Gs <= '1';E0<= '1'; ELSIF (S='0') THEN IF ( d = "11111111") THEN q <= "111";Gs <= '1';E0 <= '0'; ELSIF ( d(7) = '0') THEN q <= "000";Gs <= '0';E0 <= '1'; ELSIF ( d(6) = '0') THEN q <= "001";Gs <= '0';E0 <= '1'; ELSIF ( d(5) = '0') THEN q <= "010";Gs <= '0

17、';E0 <= '1'; ELSIF ( d(4) = '0') THEN q <= "011";Gs <= '0';E0 <= '1'; ELSIF ( d(3) = '0') THEN q <= "100";Gs <= '0';E0 <= '1'; ELSIF ( d(2) = '0') THEN q <= "101";Gs <= '0';E0 <= '1'; ELSIF ( d(1) = '0') THEN q <= "110";Gs <= '0';e0 <= '1'; ELSIF ( d(1) = '0') THEN q <= "111

18、";Gs <= '0';e0 <= '1'; END IF; END IF; END PROCESS; END RTL; B.普通编码器(4-2) 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ENCODE42 IS PORT( EN:IN STD_LOGIC; I:IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B:OUT STD_LOGIC); END ENCODE42; ARCHITECTURE RTL OF ENCODE42 IS BEGIN PROCESS(EN,

19、I) BEGIN IF(EN='0') THEN A<='0';B<='0'; ELSE IF(I(0)='0') THEN A<='0';B<='0'; ELSIF(I(1)='0') THEN A<='0';B<='1'; ELSIF(I(2)='0') THEN A<='1';B<='0'; ELSIF(I(3)='0') THEN A<='1';B<='1'; END IF; END IF; END PROCESS; END RTL; (5)四选一选择器 输入端:4路输入,2bit选择信号, 输出端:1路输出 程序:

20、 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CHOSE IS PORT( S:IN STD_LOGIC_VECTOR(1 DOWNTO 0); A,B,C,D: IN STD_LOGIC; Q: OUT STD_LOGIC ); END CHOSE; ARCHITECTURE RTL OF CHOSE IS BEGIN PROCESS(S,A,B,C,D) BEGIN CASE S IS WHEN "00" => Q <= A;

21、WHEN "01" => Q <= B; WHEN "10" => Q <= C; WHEN "11" => Q <= D; WHEN OTHERS => NULL; END CASE; END PROCESS; END RTL; (6)三态门(原理图以及VHDL语言) 数据输入din,控制输入en 数据输出dout 真值表: 数据输入 控制输入 数据输出 X 0 Z 0 1 0 1 1 1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARI

22、TH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TAI3 IS PORT( DIN,EN: IN STD_LOGIC; DOUT: OUT STD_LOGIC ); END TAI3; ARCHITECTURE RTL OF TAI3 IS BEGIN PROCESS(DIN,EN) BEGIN IF EN='1' THEN DOUT <= DIN; ELSE DOUT <= 'Z'; END IF; END PROCESS; END RTL; 状态图: (7)单向总线缓冲器 输入:A_

23、IN,使能端EN 输出:A_OUT 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY TRI_GATE8 IS PORT( A_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EN:IN STD_LOGIC; A_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END TRI_GATE8 ; ARCHITECTURE RTL OF TRI_GATE8 IS BEGIN PROCESS(EN,A_IN) BEGIN IF EN='0' THEN

24、 A_OUT <= "ZZZZZZZZ"; ELSE A_OUT <= A_IN; END IF; END PROCESS; END RTL; (8)双向总线缓冲器 双向端口:A B(inout) 使能端EN, 方向控制端DR 真值表: EN DR 功能 1 0 A<=B 1 1 B<=A 0 X 高阻 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY BITRIBUS IS PORT( DR,EN:IN STD_LOGIC; A,B:INOUT STD_LOGIC_VE

25、CTOR(7 DOWNTO 0)); END BITRIBUS; ARCHITECTURE RTL OF BITRIBUS IS BEGIN PROCESS(EN,DR,A,B) BEGIN IF(EN='0') THEN A<="ZZZZZZZZ"; ELSE IF(DR='0') THEN A<=B; ELSE A<="ZZZZZZZZ"; END IF; END IF; END PROCESS; PROCESS(EN,DR,A,B) BEGIN IF(EN='0') THEN B<="ZZZZZZZZ"; ELSE IF(DR='1')

26、THEN B<=A; ELSE B<="ZZZZZZZZ"; END IF; END IF; END PROCESS; END RTL; 原理图: (9)三人表决器 真值表: 输入 输出 A B C Q 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 原理图: (10)火灾报警系统,烟感、温感、紫外光感,两种以上探测器发出信号,系统产生报警(与(9)类似) 2.时序逻辑电路: (1)D触发

27、器 真值表: 数据输入D 时钟输入CLK 数据输出Q × 0 不变 × 1 不变 0 ↑ 0 1 ↑ 1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DFF IS PORT( CLK,D:IN STD_LOGIC; Q:OUT STD_LOGIC ); END DFF; ARCHITECTURE RTL OF DFF IS BEGI

28、N PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK='1' THEN Q <= D; END IF; END PROCESS; END RTL; (2)非同步复位的D锁存器 真值表: 数据D 时钟CLK 复位CLR 输出Q × × 0 0 × 0/1 1 不变 0 ↑ 1 0 1 ↑ 1 0 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UN

29、SIGNED.ALL; ENTITY DFF IS PORT( CLK,CLR,D:IN STD_LOGIC; Q:OUT STD_LOGIC ); END DFF; ARCHITECTURE RTL OF DFF IS BEGIN PROCESS(CLK,CLR) BEGIN IF CLR='0' THEN Q<='0'; ELSE IF CLK'EVENT AND CLK='1' THEN Q <= D; END IF; END IF; END PROCESS; END RTL; (3)同步复位的D锁存器

30、 真值表: 数据D 时钟CLK 复位CLR 输出Q × ↑ 0 0 × 0/1 1 不变 0 ↑ 1 0 1 ↑ 1 0 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DFF IS PORT( CLK,CLR,D:IN STD_LOGIC; Q:OUT STD_LOGIC ); END DFF; ARCHITECTURE RTL

31、 OF DFF IS BEGIN PROCESS(CLK,CLR) BEGIN IF CLK'EVENT AND CLK='1' THEN IF CLR='0' THEN Q<='0'; ELSE Q <= D; END IF; END IF; END PROCESS; END RTL; (4)异步复位/同步置位的D触发器 真值表: 输入 输出 数据D 时钟CLK 置位PSET 复位CLR Q × × × 0 0 × ↑ 0 1 1 × 0/1 1 1 不变 0 ↑ 1 1 0 1

32、 ↑ 1 1 1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY DFF_CLR IS PORT( CLK,CLR,PSET,D:IN STD_LOGIC; Q:OUT STD_LOGIC); END DFF_CLR; ARCHITECTURE RTL OF DFF_CLR IS BEGIN PROCESS(CLK,CLR) BEGIN IF(CLR='0') THEN Q<='0'; ELSIF(CLK'EVENT AND CLK='1') THEN IF(PSET='0') THEN Q<='

33、1'; ELSE Q<=D; END IF; END IF; END PROCESS; END RTL; (5)JK触发器 真值表: 数据输入D J K 时钟输入CLK 数据输出Q 0 0 0 ↑ 0 1 0 0 ↑ 1 0/1 0 1 ↑ 0 0/1 1 0 ↑ 1 0 1 1 ↑ 1 1 1 1 ↑ 0 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UN

34、SIGNED.ALL; ENTITY DFF IS PORT( CLK,J,K,D:IN STD_LOGIC; Q:OUT STD_LOGIC ); END DFF; ARCHITECTURE RTL OF DFF IS BEGIN PROCESS(CLK,J,K) BEGIN IF CLK'EVENT AND CLK='1' THEN IF J='0' AND K='0' THEN Q <= D; ELSIF J='0' AND K='1' THEN Q <= '0'; ELSIF J='1' AND K='0' THEN Q

35、<= '1'; ELSIF J='1' AND K='1' THEN Q <= NOT D; END IF; END IF; END PROCESS; END RTL; (6)串行输入、串行输出寄存器 输入端:串行数据,时钟 输出端:数据 8位串行移位寄存器:在时钟信号的作用下,前级的数据向后级移动 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CRCC I

36、S PORT( CLK,D:IN STD_LOGIC; Q:OUT STD_LOGIC ); END CRCC; ARCHITECTURE RTL OF CRCC IS SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK='1' THEN TEMP(7)<=D; TEMP(6 DOWNTO 0)<=TEMP(7 DOWNTO 1); Q<=TEMP(0); END IF; END PROCESS; END RTL;

37、 (7)双向移位寄存器 真值表: 输入 输出 CLR DIR LOAD CLK Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 0 × × × 0 0 0 0 0 0 0 0 1 × 0 ↑ D7 D6 D5 D4 D3 D2 D1 D0 1 0 1 ↑ 左移一位 SL 1 1 1 ↑ SH 右移一位 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LO

38、GIC_UNSIGNED.ALL; ENTITY ly1 IS PORT( CLR,CLK,LOAD,DIR:IN STD_LOGIC; SR,SL:IN STD_LOGIC; D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END ly1; ARCHITECTURE RTL OF ly1 IS SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK,CLR) BEGIN

39、IF CLR='0' THEN TEMP<="00000000"; ELSIF CLK'EVENT AND CLK='1' THEN IF LOAD='0' THEN TEMP<=D; ELSE IF DIR='0' THEN --LEFT SHIFT FOR I IN 0 TO 6 LOOP TEMP(I+1)<=TEMP(I); END LOOP; TEMP(0)<=SL; ELSE --RIGHT SHIFT FOR I IN 0 TO 6 LOOP TEMP(I)<=TE

40、MP(I+1); END LOOP; TEMP(7)<=SR; END IF; END IF; END IF; END PROCESS; Q<=TEMP; END RTL; (8)循环移位寄存器 真值表: 输入 输出 S2 S1 S0 LOAD CLK Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 × × × 0 ↑ D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 ↑ 不循环,保持原值 0 0 1 1 ↑ 循环左移1位 0 1 0 1

41、 ↑ 循环左移2位 0 1 1 1 ↑ 循环左移3位 1 0 0 1 ↑ 循环左移4位 1 0 1 1 ↑ 循环左移5位 1 1 0 1 ↑ 循环左移6位 1 1 1 1 ↑ 循环左移7位 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ly2 IS PORT( CLK,LOAD:IN STD_LOGIC; SNUM

42、IN STD_LOGIC_VECTOR(2 DOWNTO 0); DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END ly2; ARCHITECTURE RTL OF ly2 IS SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK,SNUM) BEGIN IF(LOAD='0') THEN TEMP<=DIN; ELSIF( CLK'EVENT AND CLK='1') T

43、HEN CASE SNUM IS WHEN "000"=>DOUT <= TEMP; WHEN "001"=>DOUT(7 DOWNTO 1) <= TEMP(6 DOWNTO 0); DOUT(0)<=TEMP(7); WHEN "010"=>DOUT(7 DOWNTO 2) <= TEMP(5 DOWNTO 0); DOUT(1 DOWNTO 0)<=TEMP(7 DOWNTO 6); WHEN "011"=>DOUT(7 DOWNTO 3) <= TEMP(4 DOWNTO 0); DOUT(2 DOWNTO 0)<=TEMP(7 DOWNTO 5); WHEN "10

44、0"=>DOUT(7 DOWNTO 4) <= TEMP(3 DOWNTO 0); DOUT(3 DOWNTO 0)<=TEMP(7 DOWNTO 4); WHEN "101"=>DOUT(7 DOWNTO 5) <= TEMP(2 DOWNTO 0); DOUT(4 DOWNTO 0)<=TEMP(7 DOWNTO 3); WHEN "110"=>DOUT(7 DOWNTO 6) <= TEMP(1 DOWNTO 0); DOUT(5 DOWNTO 0)<=TEMP(7 DOWNTO 2); WHEN "111"=>DOUT(7) <= TEMP( 0); DOUT(6 DOW

45、NTO 0)<=TEMP(7 DOWNTO 1); WHEN OTHERS => DOUT<=TEMP; END CASE; END IF; END PROCESS; END RTL; (9)带允许端的十二进制计数器 真值表: 输入 输出 CLR EN CLK Qd Qc Qb Qa 1 × × 0 0 0 0 0 0 × 不变 0 1 ↑ 计数值加1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.

46、STD_LOGIC_UNSIGNED.ALL; ENTITY COUNT12 IS PORT( CLR,CLK,EN:IN STD_LOGIC; QD,QC,QB,QA:OUT STD_LOGIC ); END COUNT12 ; ARCHITECTURE RTL OF COUNT12 IS SIGNAL CNT: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN QD<=CNT(3);QC<=CNT(2);QB<=CNT(1);QA<=CNT(0); PROCESS(CLK) BEGIN IF CLR='1' THEN

47、 CNT<="0000"; ELSIF CLK'EVENT AND CLK='1' THEN IF EN='1' THEN IF CNT="1011" THEN CNT<="0000"; ELSE CNT<=CNT+'1'; END IF; END IF; END IF; END PROCESS; END RTL; (10)6位二进制可逆计数器 真值表: 输入 输出 CLR UPDN CLK Qf Qe Qd Qc Qb Qa 1 × × 0 0 0 0 0 0 0 1 ↑

48、计数加1 0 0 ↑ 计数减1 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ly3 IS PORT( CLR,CLK,UPDN:IN STD_LOGIC; QF,QE,QD,QC,QB,QA:OUT STD_LOGIC ); END ly3; ARCHITECTURE RTL OF ly3 IS SIGNAL CNT: STD_LOGIC_VECTOR

49、5 DOWNTO 0); BEGIN QF<=CNT(5);QE<=CNT(4);QD<=CNT(3); QC<=CNT(2);QB<=CNT(1);QA<=CNT(0); PROCESS(CLK) BEGIN IF CLR='1' THEN CNT<="000000"; ELSIF CLK'EVENT AND CLK='1' THEN IF UPDN='1' THEN CNT<=CNT+'1'; ELSE CNT<=CNT-'1'; END IF; END IF; END PROCESS; END RTL; (11)模十二分频器 程序: LIBRARY

50、 IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ly4 IS PORT( CLK:IN STD_LOGIC; Y:OUT STD_LOGIC ); END ly4; ARCHITECTURE behav OF ly4 IS SIGNAL Q:INTEGER RANGE 0 TO 11; SIGNAL f:STD_LOGIC; BEGIN PROCESS(clk) BEGIN

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服