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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VHDL一些常用程序EDA必考.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VHDL一些常用程序EDA必考.docx

1、VHDL一些常用程序EDA必考常用程序:1/4位加法器、1/4位减法器、2/4/8位数据选择器、D/8D锁存器、D触发器、4位移位寄存器、2-4/3-8译码器、用with-select或者when-else设计同或门、异或门和或非门等、根据逻辑表达式编程等等,如F= ABC+(D+E)+GH。加减法器件的设计要考虑如何采用元件例化语句和生成语句设计。六、十进制计数器的设计布置的第3章课后作业看了几本作业,大概清楚了哪些程序有难度,下面仅列出部分程序供大家参考:【减法器】1位减法器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOG

2、IC_UNSIGNED.all;entity subber1 isport(a,b,cin:in std_logic; s:out std_logic; cout: out std_logic); end subber1;architecture one of subber1 isbegins= (a xor b) xor cin;cout= (not a)nand b)nand(not(a xor b) nand cin);end one;4位减法器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.my_pkg.all;entity sub

3、ber4 isport(a,b:in std_logic_vector(3 downto 0); cin: in std_logic; s:out std_logic_vector(3 downto 0); cout: out std_logic); end subber4;architecture one of subber4 issignal cout0,cout1,cout2: std_logic;beginu1: subber1 port map(a(0),b(0),cin,s(0),cout0);u2: subber1 port map(a(1),b(1),cout0,s(1),co

4、ut1);u3: subber1 port map(a(2),b(2),cout1,s(2),cout2);u4: subber1 port map(a(3),b(3),cout2,s(3),cout);end one;程序包:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;PACKAGE my_pkg ISComponent subber1port(a,b:in std_logic; cin: in std_logic; s:out std_logic; cout: out std_logic); END Component;Component subbe

5、r4port(a,b:in std_logic_vector(3 downto 0); cin: in std_logic; s:out std_logic_vector(3 downto 0); cout: out std_logic); END Component;end my_pkg;16位减法器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.my_pkg.all;entity subber16 isport( a,b:in std_logic_vector(15 downto 0); cin: in std_logic; s:out

6、 std_logic_vector(15 downto 0); cout: out std_logic); end subber16;architecture one of subber16 issignal cout0,cout1,cout2: std_logic;beginu1: subber4 port map(a(3 downto 0),b(3 downto 0),cin,s(3 downto 0),cout0);u2: subber4 port map(a(7 downto 4),b(7 downto 4),cout0,s(7 downto 4),cout1);u3: subber4

7、 port map(a(11 downto 8),b(11 downto 8),cout1,s(11 downto 8),cout2);u4: subber4 port map(a(15 downto 12),b(15 downto 12),cout2,s(15 downto 12),cout);end one;【D触发器】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY dchufaqi ISPORT(clk,d,clr:IN STD_LOGIC; q:OUT STD_LOGIC);END dchufaqi;ARCHITECTURE examp

8、le2 OF dchufaqi ISBEGIN process( clk,d,clr) begin if (clr=0) then q=0; elsif (clkevent and clk=1) then q=d; end if; end process;END example2;【4位移位寄存器】LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY shifter IS PORT(din,clk: IN bit; dout : out bit);END shifter;ARCHITECTURE a OF shifter IS component df

9、f port(d,clk: in bit; q: out bit); end component dff;signal d: bit_vector(0 to 4);BEGIN d(0)d(2),clk=clk,q=d(3); u4:dff port map(d=d(3),clk=clk,q=d(4); dout=d(4);END a;【8D锁存器】(1)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY latch1 IS -1位锁存器的设计PORT ( d :IN STD_LOGIC; ena :IN STD_LOGIC; q :OUT STD_

10、LOGIC);END latch1;ARCHITECTURE example4 OF latch1 ISSIGNAL sig_save:STD_LOGIC:=0;BEGIN PROCESS (d,ena) BEGIN IF ena=1 THEN Sig_save=D; END IF; Q=sig_save; END PROCESS;END example4;(2)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; PACKAGE my_pkg ISCOMPONENT latch1 -latch1入程序包PORT ( d :IN STD_LOGIC; ena :I

11、N STD_LOGIC; q :OUT STD_LOGIC);END COMPONENT;END my_pkg;(3)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE WORK.my_pkg.ALL;ENTITY ct74373 IS -8D锁存器的设计PORT (d: IN STD_LOGIC_VECTOR(7 DOWNTO 0); oen, g: IN STD_LOGIC; q: OUT STD_LOGIC _VECTOR(7 DOWNTO 0);END ct74373;ARCHITECTURE one OF ct74373 ISSIGNAL si

12、gsave: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN Gelatch: for n in 0 to 7 GENERATELatchx: latch1 port map(d(n),g,sigsave(n); END GENERATE;Q=sigsave when oen=0 else “ZZZZZZZZ”;END one;【根据逻辑表达式编程等等,如F= ABC+(D+E)+GH】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; entity cytest isport(a,b,c,d,e,g,h: in std_logic; f

13、: out std_logic); end cytest;architecture one of cytest issignal t1, t2,t3: std_logic; begin t1= a and b and c; t2= d or e; t3= g and h; f= t1 or t2 or t3; end one;【六进制计数器】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE. STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 IS PORT (CLK, CLRN, ENA, LDN: IN STD_LOGIC

14、; D: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT: OUT STD_LOGIC);END CNT6;ARCHITECTURE ONE OF CNT6 IS SIGNAL CI: STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;BEGIN PROCESS(CLK, CLRN, ENA, LDN,CI) BEGIN IF CLRN=0 THEN CI=0000; ELSIF CLKEVENT AND CLK=1 THEN IF LDN=0 THEN CI=D; ELS

15、IF ENA=1 THEN IF CI5 THEN CI=CI+1; ELSE CI=0000; END IF; END IF; END IF; Q=CI; END PROCESS; COUT z z z z z = X; END CASE; END PROCESS;END example3;(2) LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; PACKAGE mypkg ISCOMPONENT mux4_1 PORT(a,b,c,d:IN STD_LOGIC; s:IN STD_LOGIC_vector(1 downto 0); z:OUT STD_LO

16、GIC);END COMPONENT;END mypkg;(3) LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.mypkg.ALL;ENTITY doublemux41 ISPORT(aa,bb,cc,dd:IN STD_LOGIC_VECTOR(1 DOWNTO 0); sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END doublemux41;ARCHITECTURE one OF doublemux41 ISBEGIN gemux41:

17、 for n in 0 to 1 generateux: mux4_1 port map(aa(n),bb(n),cc(n),dd(n),sel,q(n);end generate;end one;【4-16译码器】updowncnt8library ieee;use ieee.std_logic_1164.all;entity updowncnt8 is port(clr,clk,ena,load,updown:in std_logic; d: in integer range 0 to 255; cout:out std_logic; q:buffer integer range 0 to

18、 255); end updowncnt8; architecture one of updowncnt8 is begin process (clk,ena,clr,d,load,updown) begin if clr=0 then q= 0; elsif clkevent and clk=1 then if load =1 then q=d; elsif ena=1 then if updown=0then q=q-1; if q = 0 then cout =0; end if; else q= q+1; if q =255 then cout =1; else cout =0; en

19、d if ; end if; end if; end if; end process; end one;还有一些题的参考程序大家都可以在书上或者是课件中找到,请大家务必认真仔细,做题时最重要一点,就是要看清题意!比如加减计数器的设计,看清楚什么时候加法计数,什么时候减法计数。另外,所有语句的格式务必看清楚,如when-else和with-select语句格式中,目标信号只出现一次等等。BCD码加法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity BCD_ADD isport( bc

20、d_a: in std_logic_vector(3 downto 0); bcd_b: in std_logic_vector(3 downto 0); bcd_c:out std_logic_vector(4 downto 0);end BCD_ADD;architecture behave of BCD_ADD issignal bin_c: std_logic_vector(4 downto 0);begin bin_c=(0&bcd_a)+bcd_b; bcd_c=bin_c when bin_c=9 else bin_c+6; end behave;法二:library ieee;

21、use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity bcd isport (a,b:in std_logic_vector(3 downto 0); y:out std_logic_vector(4 downto 0);end bcd;architecture bh of bcd issignal f:std_logic_vector(4 downto 0);signal m:std_logic_vector(4 downto 0);signal n:st

22、d_logic_vector(4 downto 0);beginm=0&a;n=0&b;f=m+n;y=f when f01010 else f+00110 when 01001f and f10011 else 00000;end bh;end process; end art;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_arith.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY add4 ISPORT(C4: IN STD_LOGIC;-前一位的进位C A4: IN STD_L

23、OGIC_VECTOR(3 DOWNTO 0);-被加数A B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);-被加数B S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-相加的和S CO4: OUT STD_LOGIC);-相加产生的进位CEND ENTITY add4;ARCHITECTURE ART OF add4 ISSIGNAL S5: STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL A5,B5: STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN A5=0&A4;-扩展被加数A高位为0B5=0&B4;-扩展被加数B高位为0S5=A5+B5+C4;-二数相加,并加上前一位的进位S4=S5(3 DOWNTO 0);-相加和的结果CO4=S5(4);-相加后的进位END ARCHITECTURE ART;- 如下举例说明-设A=0110,B=1011,CIN=0,则 0 0110 + 0 1011 + 0- 1 0001S=0001,COUT=1;(注:把A、B扩展成5位是为了保留相加后的进位)-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1