




已阅读5页,还剩91页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【例3-1】 2选1多路选择器程序。(P31)LIBRARY IEEE; -IEEE库使用说明语句USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS -实体说明部分PORT(a,b : IN STD_LOGIC;s: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux21;ARCHITECTURE mux21a OF mux21 IS -结构体说明部分BEGINPROCESS(a,b,s)BEGINIF s=0 THEN y=a;ELSEy=b;END IF;END PROCESS;END ARCHITECTURE mux21a;【例3-2】 有类属说明的2输入与非门的实体描述。(P33)ENTITY nand2 IS GENERIC ( t_rise : TIME := 2ns ;t_fall : TIME := 1ns ) PORT( a: IN BIT; b : IN BIT; s : OUT BIT);END ENTITY nand2;【例3-3】 n输入与非门的实体描述:(P33)ENTITY nand_n IS GENERIC ( n : INTEGER ) ; PORT( a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); s : OUT STD_LOGIC );END ENTITY nand_n;例3-4】 半加器的完整VHDL描述,其中x、y为加数与被加数,s为和信号,c为进位信号。(P36)ENTITY half_adder IS PORT( x,y : IN BIT; s: IN BIT; c: OUT BIT);END ENTITY half_adder;ARCHITECTURE dataflow OF half_adder IS BEGIN s = x XOR y; c = x AND y;END ARCHITECTURE dataflow;【例3-5】 2选1多路选择器的行为描述程序。(P37)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 ISPORT(a,b : IN STD_LOGIC;s: IN STD_LOGIC;y: OUT STD_LOGIC );END ENTITY mux21;ARCHITECTURE behav OF mux21 ISBEGIN PROCESS(a,b,s)BEGINIF s=0 THEN y=a;ELSEy=b;END IF;END PROCESS;END ARCHITECTURE behav;【例3-6】 2选1多路选择器数据流描述程序。(P36)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS PORT(a,b : IN STD_LOGIC;s: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux21;ARCHITECTURE dataflow OF mux21 IS BEGINy=(a AND (NOT s) OR (b AND s);END ARCHITECTURE dataflow;【例3-7】 2选1多路选择器结构描述程序。(P37)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY and21 IS PORT(i0,i1 : IN STD_LOGIC;q: OUT STD_LOGIC );END ENTITY and21;ARCHITECTURE one OF and21 IS BEGIN q=i0 AND i1; END ARCHITECTURE one;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY or21 IS PORT(i0,i1 : IN STD_LOGIC;q: OUT STD_LOGIC );END ENTITY or21;ARCHITECTURE one OF or21 IS BEGIN q=i0 OR i1; END ARCHITECTURE one;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY inv21 IS PORT(i0 : IN STD_LOGIC;q: OUT STD_LOGIC );END ENTITY inv21;ARCHITECTURE one OF inv21 IS BEGIN q= (NOT i0); END ARCHITECTURE one;LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS PORT(a,b : IN STD_LOGIC;s: IN STD_LOGIC;y: OUT STD_LOGIC );END ENTITY mux21;ARCHITECTURE struct OF mux21 IS COMPONENT and21PORT (i0,i1 : IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT;COMPONENT or21PORT (i0,i1 : IN STD_LOGIC; q: OUT STD_LOGIC);END COMPONENT;COMPONENT inv21PORT (i0: IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT;SIGNAL tmp1,tmp2,tmp3:STD_LOGIC;BEGIN u1: and21 PORT MAP (b, s,tmp1); u2: inv21 PORT MAP(s,tmp2);u3: and21 PORT MAP (a,tmp2,tmp3); u4: or21 PORT MAP(tmp1,tmp3,y);END ARCHITECTURE struct;【例3-8】 半加器的混合描述程序。(P37)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xor21 IS PORT(i0,i1:IN STD_LOGIC; q: OUT STD_LOGIC);END ENTITY xor21;ARCHITECTURE behav OF xor21 IS BEGIN q=i0 XOR i1; END ARCHITECTURE behav;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY half_adder IS PORT(a,b:IN STD_LOGIC; c,s: OUT STD_LOGIC);END ENTITY half_adder;ARCHITECTURE mix OF half_adder IS COMPONENT xor21 IS PORT(i0,i1:IN STD_LOGIC; q:OUT STD_LOGIC); END COMPONENT; BEGIN c = a AND b; u1: xor21 PORT MAP(a,b,s); END ARCHITECTURE mix;【例3-9】 打开一个字符文件,读出文件中的内容并关闭文件。(P51)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY readfile ISPORT( cs:IN STD_LOGIC; c: OUT CHARACTER);END ENTITY readfile;ARCHITECTURE read1 OF readfile ISBEGINPROCESS(cs)TYPE char_file IS FILE OF CHARACTER;FILE cfile : char_file;VARIABLE i : INTEGER :=0;BEGINIF(cs=1) THEN FILE_OPEN(cfile,f:/leifr/testfile.asc,READ_MODE); WHILE NOT ENDFILE(cfile) LOOP READ(cfile,c); i := i+1; END LOOP; FILE_CLOSE(cfile);ELSEc= - ;END IF;END PROCESS; END ARCHITECTURE read1;【例4-1】 WAIT语句示例程序。(P65)cwait1 : PROCESS BEGINy = ( a AND b ) OR ( m XOR t ) ;z = c NAND d ; WAIT ; - 无限等待 END PROCESS cwait1 ;【例4-2】 WAIT FOR语句示例程序。(65)cwait2 : PROCESS BEGIN y = ( a AND b ) OR ( m XOR t ) ; z = c NAND d ; WAIT FOR 10 * ( ct1 + ct2 ) ; - 等待由该表达式计算的时间 END PROCESS cwait2 ;【例4-3】 WAIT ON语句示例程序(二选一选择器)。(P66)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY mux2_1 ISPORT( data0, data1 : IN STD_LOGIC ; sel : IN STD_LOGIC ; q : OUT STD_LOGIC ) ;END mux2_1 ;ARCHITECTURE behavioral OF mux2_1 ISSIGNAL temp1, temp2, temp3 : STD_LOGIC ;BEGINcwait3 : PROCESS BEGIN temp1 = data0 AND sel ; temp2 = data1 AND ( NOT sel ) ; temp3 = temp1 OR temp2 ; q = temp3 ; WAIT ON data0, data1, q ; END PROCESS cwait3 ;END behavioral ;【例4-4】 WAIT ON语句和PROCESS语句中所使用的敏感信号列表的对比。(P67)ARCHITECTURE behavioral OF mux2_1 ISSIGNAL temp1, temp2, temp3 : STD_LOGIC ;BEGINcwait4 : PROCESS ( data0, data1, q ) BEGIN temp1 = data0 AND sel ; temp2 = data1 AND ( NOT sel ) ; temp3 = temp1 OR temp2 ; q = 20 ) ; - 该表达式是布尔表达式 END PROCESS cwait5 ;END behavioral ;【例4-6】 多条件WAIT语句的示例程序。(P68)cwait6 : PROCESS BEGIN M - 多条件WAIT语句 WAIT ON data0, data1,q UNTIL(temp + 5 ) = 20) FOR 34 ns ; END PROCESS cwait6 ;【例4-7】 信号代入语句示例程序。(P68)ARCHITECTURE behavioral OF example_dairu ISSIGNAL a, b, c, d,e, f : STD_LOGIC ;SIGNAL temp0, temp1, temp2, temp3, temp4, temp5 : STD_LOGIC ;BEGINcdairu : PROCESS BEGIN temp0 = a NAND b ; - 与非 temp1 = c NOR d ; - 或非 temp2 = e XOR f AFTER 5 ns ; - 异或门延迟 temp3 = ( a NAND b ) NOR ( c NAND d ) ; temp4 = ( c OR d ) NAND ( e OR f ) ; temp5 = a XOR b XOR c XOR d XOR e XOR f ; END PROCESS cdairu ;END behavioral ;【例4-8】 变量赋值语句示例程序。(P69)ARCHITECTURE behavioral OF example_fuzhi ISCONSTANT cvolt : REAL : = 3.3 ; - 定义常数CONSTANT ccurrent : REAL : = 4.0 ;VARIABLE temp0, temp1 : REAL ; - 定义变量VARIABLE temp2, temp3 : INTEGER RANGE 0 TO 255 : = 10 ;VARIABLE temp4 : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ;VARIABLE temp5 : STD_LOGIC ;SIGNAL a : STD_LOGIC ; - 定义信号SIGNAL b : REAL ;SIGNAL c : INTEGER ;SIGNAL d : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ;BEGINcfuzhi : PROCESS BEGIN temp0 : = cvolt ; - 变量直接赋值 temp1 : = ( cvolt + 1.8 ) * ccurrent ; - 变量表达式赋值 temp2 : = c + 78 ; temp3 : = c / 5 ; - 此时c必须是5的倍数 temp4 : = d ; temp5 : = temp4 ( 2 ) ; END PROCESS cfuzhi ;END behavioral ;【例4-9】 变量赋值和信号量代入的对比示例程序。(P69)ARCHITECTURE behavioral OF example_duibi ISSIGNAL d0, d1, d2, d3 : STD_LOGIC ; - 定义信号SIGNAL q0, q1 : STD_LOGIC ;BEGINcduibi_1 :PROCESS (d0, d1, d2, d3 ) BEGIN d2 = d0 ; - 信号量代入 q0 = d2 OR d3 ; d2 = d1 ; - 信号量代入 q1 = d2 OR d3 ; END PROCESS cduibi_1 ;cduibi_2 : PROCESS (d0, d1, d3 ) VARIABLE m2 : STD_LOGIC ; BEGIN m2 : = d0 ; - 变量赋值 q0 = m2 OR d3 ; m2 : = d1 ; - 变量赋值 q1 = m2 OR d3 ; END PROCESS cduibi_2 ;END behavioral ;进程cduibi_1的运行结果:q0 = d1 OR d3 并且 q1 = d1 OR d3进程cduibi_2的运行结果:q0 = d0 OR d3 而 q1 = d1 OR d3【例4-10】 采用单IF语句来描述D触发器的示例程序。(P71)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY cdff1 ISPORT( d : IN STD_LOGIC ; clk : IN STD_LOGIC ; q : OUT STD_LOGIC ; qnot : OUT STD_LOGIC ) ;END cdff1 ;ARCHITECTURE dataflow OF cdff1 ISBEGINcdff_example : PROCESS ( clk ) BEGIN IF ( clkEVENT AND clk = 1 ) THEN - 单IF语句 q = d ; qnot = NOT d ; END IF ; END PROCESS cdff_example ;END dataflow ;【例4-11】 采用二选择的IF语句来描述二选一选择器的示例程序。(P72)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY mux2_2 ISPORT( a0, a1 : IN BIT ; sel : IN BIT ; q : OUT BIT ) ;END mux2_2 ;ARCHITECTURE rtl OF mux2_2 ISBEGINcmux2_2 : PROCESS (a0, a1, sel ) BEGIN IF ( sel = 1 ) THEN - 二选择的IF语句 q = a0 ; ELSE q = a1 ; END IF ; END PROCESS cmux2_2 ;END rtl ;【例4-12】 采用多选择的IF语句来描述4选1选择电路的示例程序。(P73)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY mux4_1 ISPORT( a0, a1, a2, a3 : IN STD_LOGIC ; sel : IN STD_LOGIC_VECTOR ( 1 DOWNTO 0 ) ; q : OUT STD_LOGIC ) ;END mux4_1 ;ARCHITECTURE rtl OF mux4_1 ISBEGINcmux4_1 : PROCESS (a0, a1, a2, a3, sel ) BEGIN IF ( sel = 00 ) THEN - 多选择的IF语句 q = a0 ; ELSIF ( sel = 01 ) THEN q = a1 ; ELSIF ( sel = 10 ) THEN q = a2 ; ELSE q = a3 ; END IF ; END PROCESS cmux4_1 ;END rtl ;【例4-13】 采用IF语句嵌套结构的带复位端的四选一选择器的示例程序。(P74)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY mux4_2 ISPORT( cdata : IN STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ; sel : IN STD_LOGIC_VECTOR ( 1 DOWNTO 0 ) ; creset : IN STD_LOGIC ; q : OUT STD_LOGIC ) ;END mux4_2 ;ARCHITECTURE rtl OF mux4_2 ISBEGINcmux4_2 : PROCESS ( cdata, sel, creset ) BEGIN IF ( creset = 1 ) THEN IF ( sel = 00 ) THEN - 多选择的IF语句 q = cdata (0) ; ELSIF ( sel = 01 ) THEN q = cdata (1) ; ELSIF ( sel = 10 ) THEN q = cdata (2) ; ELSE q = cdata (3) ; END IF ; ELSE q = 0 ; END IF ; END PROCESS cmux4_2 ;END rtl ;【例4-14】 采用CASE语句来描述4选1选择器的示例程序。(P76)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY mux4_3 ISPORT( cdata : IN STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ; sel : IN STD_LOGIC_VECTOR ( 1 DOWNTO 0 ) ; q : OUT STD_LOGIC ) ;END mux4_3 ;ARCHITECTURE rtl_mux4 OF mux4_3 ISSIGNAL temp_sel : INTEGER RANGE 0 TO 3 ;BEGINcmux4_3 : PROCESS ( cdata, sel ) BEGIN temp_sel = 0 ; IF ( sel (0) = 1 ) THEN - 选择控制信号的译码 temp_sel = temp_sel + 1 ; END IF ; IF ( sel (1) = 1 ) THEN - 选择控制信号的译码 temp_sel q q q q q q q q q q q q q q = XXXXXXXX ; END CASE ; ELSE q = 11111111 ; END IF ; END PROCESS ;END ARCHITECTURE rtl_cdecoder_3_8 ; - VHDL 1993版可以这么用【例4-16】 采用FOR LOOP语句实现32位奇偶校验电路的示例程序。(P78)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY cparity1 IS PORT( cdata : IN STD_LOGIC_VECTOR ( 31 DOWNTO 0 ) ; q : OUT STD_LOGIC ; qnot : OUT STD_LOGIC ) ;END ENTITY cparity1 ;ARCHITECTURE rtl_cparity OF cparity1 ISBEGINcparity_example : PROCESS ( cdata )VARIABLE temp : STD_LOGIC ; BEGIN temp : = 1 ; FOR i IN 0 TO 31 LOOP - FOR LOOP语句对32位逻辑值奇偶判断 temp : = temp XOR cdata ( i ) ; END LOOP ; q = temp ; qnot = NOT temp ; END PROCESS cparity_example ;END ARCHITECTURE rtl_cparity ;【例4-17】 WHILE LOOP语句格式的示例程序。(79)VARIABLE sum_temp : INTEGER : = 0 ;VARIABLE i : INTEGER : = 0 ;BEGINsum_example : WHILE ( i 100 ) LOOP sum_temp : = sum_temp + i ; i : = i + 1 ; END LOOP sum_example ;END PROCESS ;【例4-18】 采用WHILE LOOP语句实现32位奇偶校验电路的示例程序。(80)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY cparity2 IS PORT( cdata : IN STD_LOGIC_VECTOR ( 31 DOWNTO 0 ) ; q : OUT STD_LOGIC ; qnot : OUT STD_LOGIC ) ;END ENTITY cparity2 ;ARCHITECTURE behav_cparity1 OF cparity2 ISBEGINcparity_example : PROCESS ( cdata )VARIABLE temp : STD_LOGIC ;VARIABLE i : INTEGER ; - 必须要有,不能省略 BEGIN temp : = 0 ; i : = 0 ; - WHILE LOOP语句对32位逻辑值进行奇偶判断 WHILE ( i 32 ) LOOP temp : = temp XOR cdata ( i ) ; i : = i + 1 ; END LOOP ; q = temp ; qnot = NOT temp ; END PROCESS cparity_example ;END ARCHITECTURE behav_cparity1 ;【例4-19】 采用外部信号控制的32位奇偶校验电路的示例程序。(81)LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY cparity3 IS PORT( cdata : IN STD_LOGIC_VECTOR ( 31 DOWNTO 0 ) ; ccontrol : IN STD_LOGIC ; q : OUT STD_LOGIC ;qnot : OUT STD_LOGIC ) ;END ENTITY cparity3 ;ARCHITECTURE rtl_cparity OF cparity3 ISBEGINcparity_example : PROCESS ( cdata, ccontrol )VARIABLE temp : STD_LOGIC ; BEGIN temp : = 0 ; FOR i IN 0 TO 31 LOOP - FOR LOOP语句对32位逻辑值奇偶判断 NEXT WHEN ccontrol = 0 ; - 外部信号ccontrol为逻辑低电平 temp : = temp XOR cdata ( i ) ; WAIT FOR 200 ms ; - 使得程序等待200 ms END LOOP ; q = temp ; qnot 150 THEN EXIT ; - 当条件成立则提前退出循环 END IF ; END LOOP ; END PROCESS cexit_example ;END ARCHITECTURE behav_cexit ;【例4-22】 采用RETURN语句的示例程序。(P83)FUNCTION cmax21 ( d1 : INTEGER ; d2 : INTEGER ) RETURN INTEGER ISVARIABLE temp : INTEGER : = 1 ; BEGIN IF d1 d2 THEN temp : = d1 ; ELSE temp : = d2 ; END IF ; RETURN temp ; END cmax21 ;【例4-23】 采用REPORT语句的示例程序。(P84)REPORT data0 is timed out at 0 - data0在逻辑0上超时SEVERITY ERROR ;REPORT q is not at 1 - q不在逻辑1电平上SEVERITY WARNING ;【例4-24】 使用NULL语句的示例程序。(P84)ARCHITECTURE dataflow OF cnull ISSIGNAL d, q : STD_LOGIC ;SIGNAL sel : STD_LOGIC_V
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家电公司税务申报管理规定
- 公务员法考试题库及答案
- 家电公司合同模板管理规定
- 异常分娩试题及答案
- 驾驶证学法减分考试题库及答案
- 高危孕产妇管理试题及答案
- 防风固沙面试题及答案
- 化工事故如何应对
- 家电公司连锁管理办法
- 家电公司财务报告管理规定
- 2025年教育法律法规试题库及答案
- (标准)第三方合同转让协议书
- GB/T 20988-2025网络安全技术信息系统灾难恢复规范
- 2025年浙江省中考社会试题卷(含答案)
- 2025广西公需科目考试答案(3套涵盖95-试题)一区两地一园一通道建设人工智能时代的机遇与挑战
- 男女导尿并发症
- 沉淀池安全操作规程
- 职业规划杨彬课件
- 车间现场品质培训
- 央视中秋诗会活动方案
- 脑转移瘤护理查房
评论
0/150
提交评论