版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDAEDA技术技术实用教程实用教程5.1 4位加法计数器的位加法计数器的VHDL描述描述5.1.1 4位加法计数器位加法计数器【例【例5-1】ENTITY CNT4 IS PORT ( CLK : IN BIT ; Q : BUFFER INTEGER RANGE 15 DOWNTO 0 ) ; END ; ARCHITECTURE bhv OF CNT4 IS BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q = Q + 1 ; END IF; END PROCESS ;END bhv;5.1.2 整数、自然数和正整数数据类型
2、整数、自然数和正整数数据类型整数常量的书写方式示例如下:整数常量的书写方式示例如下:1 1 十进制整数十进制整数0 0 十进制整数十进制整数3535 十进制整数十进制整数1010E3E3 十进制整数十进制整数16#16#D9#D9# 十六进制整数十六进制整数8#720#8#720# 八进制整数八进制整数 2#11010010# 2#11010010# 二进制整数二进制整数5.1 4位加法计数器的位加法计数器的VHDL描述描述5.1.3 4位加法计数器的另一种表达方式位加法计数器的另一种表达方式【例【例5-2】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL
3、 ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ; ARCHITECTURE bhv OF CNT4 ISSIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ; END IF; Q XOTHERS=X) 为了简化表达才使用短语为了简
4、化表达才使用短语“(“(OTHERS=X)”OTHERS=X)”,这是一个省略赋这是一个省略赋值操作符,它可以在较多位的位矢量赋值中作省略化的赋值,值操作符,它可以在较多位的位矢量赋值中作省略化的赋值,如以下语句:如以下语句: SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a1 := (OTHERS=0) ;5.2.2 带有复位和时钟使能的带有复位和时钟使能的10进制计数器进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_11
5、64.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10;ARCHITECTURE behav OF CNT10 ISBEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = 1 THEN CQI := (OTHERS
6、 =0) ; -计数器复位计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿检测时钟上升沿 IF EN = 1 THEN -检测是否允许计数检测是否允许计数 IF CQI 0);-大于大于9,计数值清零,计数值清零 END IF; END IF; END IF; IF CQI = 1001 THEN COUT = 1; -计数大于计数大于9,输出进位信号,输出进位信号 ELSE COUT = 0; END IF; CQ = CQI; -将计数值向端口输出将计数值向端口输出 END PROCESS;END behav;【例【例5-3】图图5-3 例例5-3的
7、的RTL电路电路图图5-4 例例5-3的工作时序的工作时序5.2.3 带有并行置位的移位寄存器带有并行置位的移位寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT IS - 8位右移寄存器位右移寄存器 PORT ( CLK,LOAD : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0); QB : OUT STD_LOGIC );END SHFRT;ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS (CLK, LOAD) VARIABLE
8、REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF LOAD = 1 THEN - 装载新数据装载新数据 REG8 := DIN; ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1); END IF; END IF; QB = REG8(0); END PROCESS; - 输出最低位输出最低位END behav;【例5-4】5.2.3 带有并行置位的移位寄存器带有并行置位的移位寄存器图图5-5 例例5-4的工作时序的工作时序(1 1)在第)在第一个时钟到来时,一个
9、时钟到来时,LOADLOAD恰为高电平恰为高电平(2 2)第二个时钟,以及以后的时钟信号都是移位时钟)第二个时钟,以及以后的时钟信号都是移位时钟(3 3)第二)第二个时钟后,个时钟后,QBQB输出了右移出的第输出了右移出的第2 2个位个位115.3 数据对象数据对象DATA OBJECTS5.3.1 常数(常数(CONSTANT)常数定义的一般表述:常数定义的一般表述: CONSTANT 常数名:数据类型常数名:数据类型 := 表达式表达式 ;5.3.2 变量(变量(VARIABLE)定义变量的一般表述:定义变量的一般表述: VARIABLE 变量名变量名 : 数据类型数据类型 := 初始值初
10、始值 ; 5.3.3 信号(信号(SIGNAL)定义格式:定义格式: SIGNAL 信号名:信号名: 数据类型数据类型 := 初始值初始值 ;5.3 数据对象数据对象DATA OBJECTS5.3.4 进程中的信号与变量赋值语句进程中的信号与变量赋值语句 信号信号SIGNAL 变量变量VARIABLE基本用法基本用法 用于作为电路中的信号连线用于作为电路中的信号连线 用于作为进程中局部数据存储单元用于作为进程中局部数据存储单元适用范围适用范围 在整个结构体内的任何地方都能适用在整个结构体内的任何地方都能适用只能在所定义的进程中使用只能在所定义的进程中使用行为特性行为特性 在进程的最后才对信号赋
11、值在进程的最后才对信号赋值 立即赋值立即赋值表表5-1 信号与变量赋值语句功能的比较信号与变量赋值语句功能的比较5.3.4 进程中的信号与变量赋值语句进程中的信号与变量赋值语句【例【例5-5】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE QQ : STD_LOGIC ; BEGIN IF CL
12、KEVENT AND CLK = 1 THEN QQ := D1 ; END IF; Q1 = QQ; END PROCESS ; END ;5.3.4 进程中的信号与变量赋值语句进程中的信号与变量赋值语句【例例5-6】 . . . ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK =1 THEN QQ = D1 ; END IF; Q1 = QQ; END PROCESS ; END ;5.3.4 进程中的信号与变量赋值语句进程中的信号与变量赋值语
13、句【例【例5-7】 SIGNAL in1,in2,e1, . : STD_LOGIC ; . PROCESS(in1,in2, . . .) VARIABLE c1,. . . : STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN IF in1 = 1 THEN . - 第第 1 行行 e1 = 1010 ; - 第第 2 行行 . IF in2 = 0 THEN . . . - 第第 15+n 行行 . c1 := 0011 ; - 第第 30+m 行行 . END IF; END PROCESS;【例【例5-8】 LIBRARY IEEE ; USE IEEE.ST
14、D_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL A,B : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN A = D1; B = A; Q1 =B; END IF; END PROCESS ; END ;5.3.4 进程中的信号与变量赋值语句进程中的信号与变量赋值语句【例【例5-9】LIBRARY IEE
15、E ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT ( CLK,D1 : IN STD_LOGIC ; Q1 : OUT STD_LOGIC); END ; ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE A,B : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK =1 THEN A:= D1; B := A; Q1 = B; END IF; END PROCESS ; END ;5.3.4 进程中的信号与变量赋值语句进程中的信号与变量赋值语句5
16、.3.4 进程中的信号与变量赋值语句进程中的信号与变量赋值语句DQDQDQDQD1Q1D1Q1CLKCLK图图5-6例例5-7的的RTL电路电路 图图5-7 例例5-8的的RTL电路电路 【例【例5-10】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;ARCHITECTURE body_mux4 OF mux4 ISsignal muxval : integer range 7 downto
17、 0;BEGINprocess(i0,i1,i2,i3,a,b)begin muxval = 0;if (a = 1) then muxval = muxval + 1; end if;if (b = 1) then muxval q q q q null;end case;end process; END body_mux4;【例【例5-11】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0, i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;
18、ARCHITECTURE body_mux4 OF mux4 ISBEGINprocess(i0,i1,i2,i3,a,b)variable muxval : integer range 7 downto 0;begin muxval := 0;if (a = 1) then muxval := muxval + 1; end if;if (b = 1) then muxval := muxval + 2; end if;case muxval is when 0 = q q q q null;end case;end process; END body_mux4;图图5-8 例例5-10的的
19、RTL电路电路例例5-11的的RTL电路电路图图5-10 例例5-10的错误的工作时序的错误的工作时序图图5-11 例例5-11的正确工作时序的正确工作时序5.4 双向电路和三态控制电路设计双向电路和三态控制电路设计5.4.1 三态门设计三态门设计【例【例5-12】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_s IS port ( enable : IN STD_LOGIC; datain : IN STD_LOGIC_VECTOR(7 DOWNTO 0); dataout : OUT STD_LOGIC_VECTOR(7 DOWNT
20、O 0);END tri_s ; ARCHITECTURE bhv OF tri_s ISBEGINPROCESS(enable,datain) BEGIN IF enable = 1 THEN dataout = datain ; ELSE dataout =ZZZZZZZZ ; END IF ;END PROCESS;END bhv;图图5-12 8位位3态控制门电路态控制门电路5.4.2 双向端口设计双向端口设计【例【例5-13】library ieee;use ieee.std_logic_1164.all;entity tri_state isport (control : in s
21、td_logic; in1: in std_logic_vector(7 downto 0); q : inout std_logic_vector(7 downto 0); x : out std_logic_vector(7 downto 0);end tri_state;architecture body_tri of tri_state isbeginprocess(control,q,in1)beginif (control = 0) then x = q ; else q = in1; x=ZZZZZZZZ ;end if;end process;end body_tri;5.4.
22、2 双向端口设计双向端口设计图图5-13 例例5-13的仿真波形图的仿真波形图5.4.2 双向端口设计双向端口设计【例【例5-14】(以上部分同上例)(以上部分同上例)process(control,q,in1)beginif (control=0) then x = q ; q = ZZZZZZZZ; else q = in1; x =ZZZZZZZZ;end if;end process;end body_tri;图图5-14 例例5-14的仿真波形图的仿真波形图5.4.2 双向端口设计双向端口设计图图5-15 例例5-13的综合结果的综合结果6.4.2 双向端口设计双向端口设计图图6-1
23、6 例例6-14的综合结果的综合结果5.4.3 三态总线电路设计三态总线电路设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tristate2 IS port ( input3, input2, input1, input0 : IN STD_LOGIC_VECTOR (7 DOWNTO 0); enable : IN STD_LOGIC_VECTOR(1 DOWNTO 0); output : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END tristate2 ; ARCHITECTURE multiple_dr
24、ivers OF tristate2 ISBEGINPROCESS(enable,input3, input2, input1, input0 ) BEGIN IF enable = 00 THEN output = input3 ; ELSE output Z); END IF ; IF enable = 01 THEN output = input2 ; ELSE output Z); END IF ; IF enable = 10 THEN output = input1 ; ELSE output Z); END IF ; IF enable = 11 THEN output = in
25、put0 ; ELSE output Z); END IF ;END PROCESS;END multiple_drivers;【例5-15】5.4.3 三态总线电路设计三态总线电路设计图图5-17 例例5-15错误的综合结果错误的综合结果5.4.3 三态总线电路设计三态总线电路设计library ieee;use ieee.std_logic_1164.all;entity tri isport (ctl : in std_logic_vector(1 downto 0); datain1, datain2,datain3, datain4 : in std_logic_vector(7 d
26、ownto 0); q : out std_logic_vector(7 downto 0) );end tri;architecture body_tri of tri isbegin q Z) ; q Z) ; q Z) ; q Z) ;end body_tri;【例【例5-16】5.4.3 三态总线三态总线电路设计电路设计图图5-18 例例5-16正正确的综合结果确的综合结果5.4.4 顺序条件语句顺序条件语句IF语句语句(1)IF 条件句条件句 Then 顺序语句顺序语句 END IF ;(2)IF 条件句条件句 Then 顺序语句顺序语句; ELSE 顺序语句顺序语句; END IF
27、 ;(3)IF 条件句条件句 Then IF 条件句条件句 Then . END IF; END IF; (4)IF 条件句条件句1 Then 顺序语句顺序语句; ELSIF 条件句条件句2 then 顺序语句顺序语句; ELSIF 条件句条件句3 then . ELSE 顺序语句顺序语句; END IF; 5.4.4 顺序条件语句顺序条件语句IF语句语句【例【例5-17】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY control_stmts ISPORT (a, b, c: IN BOOLEAN; output: OUT BOOLEA
28、N); END control_stmts; ARCHITECTURE example OF control_stmts IS BEGIN PROCESS (a, b, c) VARIABLE n: BOOLEAN; BEGIN IF a THEN n := b; ELSE n := c; END IF; output = n; END PROCESS; END example;5.4.4 顺序条件语句顺序条件语句IF语句语句【例【例5-18】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT ( din : IN STD
29、_LOGIC_VECTOR(0 TO 7); output : OUT STD_LOGIC_VECTOR(0 TO 2) );END coder;ARCHITECTURE behav OF coder IS SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS (din) BEGIN IF (din(7)=0) THEN output = 000 ; ELSIF (din(6)=0) THEN output = 100 ; ELSIF (din(5)=0) THEN output = 010 ; ELSIF (din(4)=0) T
30、HEN output = 110 ; ELSIF (din(3)=0) THEN output = 001 ; ELSIF (din(2)=0) THEN output = 101 ; ELSIF (din(1)=0) THEN output = 011 ; ELSE output = 111 ; END IF ; END PROCESS ; END behav;表表5-2 8线线-3线优先编码器真值表线优先编码器真值表 输输 入入 输输 出出 din0 din1 din2 din3 din4 din5 din6 din7 output0 output1 output2 din0 din1 d
31、in2 din3 din4 din5 din6 din7 output0 output1 output2 x x x x x x x 0 0 0 0 x x x x x x x 0 0 0 0 x x x x x x 0 1 1 0 0 x x x x x x 0 1 1 0 0 x x x x x 0 1 1 0 1 0 x x x x x 0 1 1 0 1 0 x x x x 0 1 1 1 1 1 0 x x x x 0 1 1 1 1 1 0 x x x 0 1 1 1 1 0 0 1 x x x 0 1 1 1 1 0 0 1 x x 0 1 1 1 1 1 1 0 1 x x 0 1 1 1 1 1 1 0 1 x 0 1 1 1 1 1 1 0 1 1 x 0 1 1 1 1 1 1 0 1 1 x 1 1 1 1 1 1 1 1 1 1 x 1 1 1 1 1 1 1 1 1 1注:表中的注:表中的“x”为任意,类似为任意,类似VHDL中的中的“”值。值。5.4.4 顺序条件语句顺序条件语句IF语句语句5.5 进程语句结构进程语句结构 5.5.1 进程语句格式进程语句格式PROCESS语句结构的一般表达格式如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 自闭症认知启蒙训练课件
- 2026 学龄前自闭症教师干预情绪课件
- 09-第三章 C++语言基础7
- 智能家居技术规范解析
- 互联网时代的风险管理
- 2026 学龄前自闭症提升干预情绪课件
- 2026 学龄前自闭症幼儿园适应课件
- 宾馆年终个人工作总结10篇
- 客户感谢信15篇
- 寿宴发言稿15篇
- 2025年银行业务知识考试题及答案
- 2026济南市护士招聘笔试题及答案
- 物业纠纷调解技巧2026年培训
- 家长会课件 下学期八年级期中考后分析与安全建议家长会课件
- 2026国家广播电视总局直属事业单位招聘166人备考题库(北京)附答案详解(突破训练)
- 2026全球与中国多功能多面体低聚倍半硅氧烷(POSS)行业前景动态及发展趋势预测报告
- 婴儿脑瘫早期康复训练方案
- 总审计师评价制度
- 广东省广州市2026年中考一模英语试题附答案
- 2026校招:陕西投资集团面试题及答案
- 2025年郴电国际校园招聘74人笔试历年难易错考点试卷带答案解析
评论
0/150
提交评论