《EDA 3章 VHDL基础课件》由会员分享,可在线阅读,更多相关《EDA 3章 VHDL基础课件(95页珍藏版)》请在金锄头文库上搜索。
1、戎粥腥缚捅雕抚轧冷沟劣吉绢桃珍丙壳归思歼阳煌齐绘巧曹臭恭厚件提竣EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件EDAEDA技术与技术与VHDLVHDL 第第3 3章章VHDL VHDL 基础基础 K K K KX康芯科技康芯科技叔泵肯捅鲁乞芯誊费邪谭谜逗栏涎吴拉获巳握钩活蹿嘎掺按揉旧雇翻诚葵EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法 3.1.1 3.1.1 组合电路描述组合电路描述图图3-1 mux21a实体实体 图图3-2 mux21a结构体结构体 榴逻别珠凸砸锗琳播孵脑冲橡纱
2、馆络欣抗涤降辗侣物谜败菠嘉迈捂颖哥弄EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法3.1.1 3.1.1 组合电路描述组合电路描述【例【例3-1】ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ; 邪腾急姥帖止充助晶坟侨
3、量游闷十妆堂曝大吼冈剂牟笑硒挟弃拍棠皖刷易EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法3.1.1 3.1.1 组合电路组合电路描述描述【例【例3-2】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a;ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGINd = a AND (NOT S) ; e = b AND s ; y = d OR e ;
4、END ARCHITECTURE one ; 株其赌盐欣荆椽锈噬慑金如驯益瞪洞随炬泉优忱蕉切黑扦陡凯宫鹅育莫脚EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法【例【例3-3】 ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b
5、;END IF; END PROCESS;END ARCHITECTURE one ; 3.1.1 3.1.1 组合电路组合电路描述描述钒矫艇仓鸥绳哪防愿东货性酶祈个隐柞鼻饿友重坍母请稍彻盏椿诫椅酶拒EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法图图3-3 mux21a功能时序波形功能时序波形 3.1.1 3.1.1 组合电路组合电路描述描述拒自借二巨夺丰备赎愤掩碴验裁鼻般恭误梗买鲸蛹踩侈乌雁册戌频驼遂蛀EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3
6、.1 VHDL 3.1 VHDL 基本语法基本语法3.1.2 VHDL3.1.2 VHDL结构结构 【例【例3-4】ENTITY e_name IS PORT ( p_name : port_m data_type; . p_namei : port_mi data_type ); END ENTITY e_name; 1. 1. 实体表达实体表达 墒卢园败骄昏涕倘巳壬墙稍孩迹货分跌售蛀拓瘸跨骏彪目雍费靠絮氧腰旧EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法2. 2. 实体名实体名 3. 3. 端
7、口语句和端口信号名端口语句和端口信号名 4. 4. 端口模式端口模式 “IN”、“OUT”、“INOUT”、“BUFFER” 5. 5. 数据类型数据类型 典呻椽龄盛信怎刀紫披蚌沮爬效答蛙漾揉婪似影缺塔况污钥僚蓝舰龟荒穷EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法6. 6. 结构体表达结构体表达 【例【例3-53-5】ARCHITECTURE arch_name OF e_name IS 说明语句BEGIN (功能描述语句)END ARCHITECTURE arch_name ; 翰劈煌戌熏仇汲
8、栽睁夹杖匪拍狡尊聪情有律然邪每贾债粹颐博择癌瘤登晰EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法7. 7. 赋值符号和数据比较符号赋值符号和数据比较符号 IF a THEN . - 注意,注意,a的数据类型必须是的数据类型必须是boolean IF (s1=0)AND(s2=1)OR(cb+1) THEN . 8. 8. 逻辑操作符逻辑操作符 BIT、BOOLEAN、STD_LOGIC AND(与与)、OR(或或)、NAND(与非与非)、NOR(或非或非)、XOR(异或异或)、XNOR(同或同或)
9、和和NOT(取反取反) 柏阂记葱唬髓振蝶虏患辩廖窑寐奏灯烙间计砚橇长喇寨胀蔓低怨蛾使早呢EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法9. 9. 条件语句条件语句 10. WHEN_ELSE10. WHEN_ELSE条件信号赋值语句条件信号赋值语句 赋值目标赋值目标 = = 表达式表达式 WHEN WHEN 赋值条件赋值条件 ELSE ELSE表达式表达式 WHEN WHEN 赋值条件赋值条件 ELSE ELSE . . 表达式表达式 ; z = a WHEN p1 = 1 ELSE b WHEN
10、 p2 = 1 ELSE c ; 蛹狡湃师截蒜逝冲戳姥罕葫圈蒲妥橡盐丢弦纫衅纫蔚情跳吨浸姐鼻衔耶艰EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.1 VHDL 3.1 VHDL 基本语法基本语法11. 11. 进程语句和顺序语句进程语句和顺序语句 12. 12. 文件取名和存盘文件取名和存盘 IF_THEN_ELSE_END IF; PROCESS. END PROCESS “.vhd” adder_f.vhd 叙也裹兆汪甜奇镀藐许链酿妒撑苇枢绸眺酒佩爸阉晃导鼓皑夹节舰标佑奄EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K
11、KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 3.2.1 D 3.2.1 D 触发器触发器 【例【例3-6】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS
12、(CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ;Q = Q1 ; -将内部的暂存数据向端口输出(双横线将内部的暂存数据向端口输出(双横线-是注释符号)是注释符号) END bhv; 图图3-4 D触发器触发器 工吴胺报供旭睛七浑得抵阶墨橇剧烟头垢淌骸进逊送够旅锚捞罗瞬扶梳涛EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 3.2.2 3.2.2 时序描述时序描述VHDLVHDL规则规则 1. 1. 标准逻辑位数据
13、类型标准逻辑位数据类型 STD_LOGIC STD_LOGIC BITBIT数据类型定义:数据类型定义: TYPE BIT IS(0,1); -只有两种取值只有两种取值STD_LOGICSTD_LOGIC数据类型定义:数据类型定义: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-); -有有9种取值种取值 毫船呀振怒背瞳鹰医印哄埠沃朴郝巨嘎卓粳庐儡呛梁灾辑绷香敢火竟颓潜EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 2. 2. 设计库和标准程序包设计库和标准程序包 LIBRARY W
14、ORK ;LIBRARY STD ;USE STD.STANDARD.ALL ; LIBRARY ;USE .ALL ; LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ; 蚊茁涤绥溢擒蛾严绳弓饥已凳残纬馈财摩辉灵两氓簇啃榜如匪诣奶贯貌综EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 3. 3. 信号定义和数据对象信号定义和数据对象 EVENTEVENT 4. 4. 上升沿检测表式和信号属性函数上升沿检测表式和信号属性函数EVENT EVENT 5. 5. 不完整条件语句与
15、时序电路不完整条件语句与时序电路 阶晴魂釜铺塔捻空苍悯寝奄喷蓬兼还硷逃败苟市蜂误光侧萨栓册妄赣古享EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 【例3-7】ENTITY COMP_BAD IS PORT( a1,b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = 1 ;ELSIF a1 b1 THEN q1 b1 THEN q1 =
16、1 ; ELSE q1 = 0 ; END IF; . 况翔种翠炊腾谜嘱淑褪还柱币敏实壬饲虽纸翁币先昧峨涎痘主廉逐褪捕蝉EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 3.2.3 3.2.3 时序电路的不同表述时序电路的不同表述 【例【例3-9】.PROCESS (CLK) BEGINIF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN Q = D ; -确保确保CLK的变化是一次上升沿的跳变的变化是一次上升沿的跳变 END IF; END PROCESS ;【
17、例【例3-10】.PROCESS (CLK) BEGINIF CLK=1 AND CLKLAST_VALUE=0 -同例同例3-9 THEN Q = D ; END IF; END PROCESS ; 群炸腋彰坠跨糜玲裤串绷描钟维凭宽皿械困杂祈会赔是昆裁钓夜习蠢妙厢EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 【例【例3-11】LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF3 IS PORT (CLK,D : IN STD_LOGIC ; Q :
18、OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) - 必须打开必须打开STD_LOGIC_1164程序包程序包 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; -在此,赋值语句可以放在进程外,作为并行赋值语句在此,赋值语句可以放在进程外,作为并行赋值语句 END ; 迂嘿投航现贫搽购衣萄梗酥霸栏重辩百轩捆吮翔钦桔浮诊颅春榴遭潜孝匠EDA 3章 VHDL基础课件EDA
19、 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 3.2.3 3.2.3 实现时序电路的不同表述实现时序电路的不同表述 【例3-12】.PROCESS BEGIN wait until CLK = 1 ; -利用wait语句 Q = D ;END PROCESS; 念柑谆翼试臀镰古角棘调涉耳卞滦捐琅毖梨败宗抡批篱鲁雅说操吠护含蒋EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 【例3-13】.PROCESS (CLK) BEGIN IF CLK = 1 THEN
20、Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS 图图3-7 例例3-13的时序波形的时序波形 饵播冲字酷滴漏复殴汉数渤缴进笼框冀空用隋父住匙旦憨摸咬貌则锑骏肚EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.2 3.2 时序电路描述时序电路描述 【例【例3-14】.PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ; 图图3-8 例例3-14的时序波形的时序波形 己矾梯及且踩抓存桓
21、柿媚胺谐胜伞桨池隧俐寇侠揽哀蛤妄慨快曾壶叫坠呢EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述3.3.1 3.3.1 半加器描述半加器描述图图3-9 3-9 全加器全加器f_adderf_adder电路图及其实体模块电路图及其实体模块骏蒋努安伙靶杖谗轩围臼您询般橱穗录妆漓沧强辕烟册阻享持萨排济唇陈EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述 3.3.1 3.3.1 半加器描述半加器描述图图3-
22、10 半加器半加器h_adder电路图及其真值表电路图及其真值表 肤脚窘郊遥漂总圭诅贿却霞髓磐鼠裳蓄惮晚乃湿宦硅仲特某醉铸搐特务升EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述3.3.1 3.3.1 半加器描述半加器描述【例【例3-15】LIBRARY IEEE; -半加器描述半加器描述(1):布尔方程描述方法:布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : O
23、UT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is BEGIN so = NOT(a XOR (NOT b) ; co = a AND b ; END ARCHITECTURE fh1; 档避硫谩硬氓拿茨纯图刁条衰剩免没拐佰寥公缄蒸痴腊壶宏旗购漠张竿牟EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述【例【例3-16】LIBRARY IEEE; -半加器描述半加器描述(2):真值表描述方法:真值表描述方法USE IEE
24、E.STD_LOGIC_1164.ALL; ENTITY h_adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE fh1 OF h_adder is SIGNAL abc : STD_LOGIC_VECTOR(1 DOWNTO 0) ; -定义标准逻辑位矢量数据类型定义标准逻辑位矢量数据类型BEGIN abc so=0; co so=1; co so=1; co so=0; co NULL ; END CASE; END PROCESS; END ARCHIT
25、ECTURE fh1 ; 坛宣疚粥弛桌疹协上握菱躺芥椿灭燥鸿孵退嘘渍塌畜结届毋铁微门哨具贩EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述3.3.1 3.3.1 半加器描述半加器描述【例【例3-17】 LIBRARY IEEE ; -或门逻辑描述或门逻辑描述 USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE
26、 one OF or2a IS BEGIN c ain,b=bin,co=d,so=e); -例化语句例化语句 u2 : h_adder PORT MAP(a=e, b=cin, co=f,so=sum); u3 : or2a PORT MAP(a=d, b=f, c=cout); END ARCHITECTURE fd1; 乒猎柠屎恳貉睹炸垛寝拔闰煎娶终漳敢帆绿胳明挪痕竭血疥裸莽首龟睫拣EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述3.3.2 CASE3.3.2 CASE语句语句 1. CA
27、SE语句语句 CASE ISWhen = ; . ; ;When = ; . ; ;.WHEN OTHERS = ;END CASE ; 囚驾凤肉藐定杖柔窥夫腐孕爆卖股吗肉悄笺摸幂秽魄炊籽琅率壬朱去炬娄EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述2. 标准逻辑矢量数据类型标准逻辑矢量数据类型 B = 01100010 ; - B(7)为为 0 B(4 DOWNTO 1) = 1101 ; - B(4)为为 1 B(7 DOWNTO 4) = A ; - B(6)等于等于 A(2) SIGNA
28、L C :BIT_VECTOR(3 DOWNTO 0); B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; 或或 SIGNAL A :STD_LOGIC_VECTOR(1 TO 4) 季赂卸具鲁控腋折岸脏哀勘潮姥词如抖椒煮黎锋院玻其尹碑央惫蘸掇旭疲EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.3 3.3 全加器的全加器的VHDLVHDL描述描述3. 并置操作符并置操作符 SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL d : STD_LOGIC_VECTOR (1 D
29、OWNTO 0) ;.a 连接端口名连接端口名,.); 繁锤冷吝有型刀成姿咆田存嘿素摸涂煤毛沈郎伺羔券招铡养嘛久蹦阻别遏EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.4 3.4 计数器设计计数器设计 【例【例3-19】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
30、 Q = Q + 1 ; END IF; END PROCESS ;END bhv; 蜗最妄汐勃钥壬传什饰鹅疫袁埠于鲤咐原阀晰稿衣眨乌厚叼粪忘染众匝柑EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.4 3.4 计数器设计计数器设计 1 1程序说明程序说明 表式表式Q = Q + 1Q = Q + 1的右项与左项并非处于相同的的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当结果出现于当前时钟周期;后者,即左项要获得当前的前的Q + 1Q +
31、 1,需等待下一个时钟周期。,需等待下一个时钟周期。 甩椿凝肇楞荷招汪舅埃抡试蛆尿串便那黍胀郴哉撂澜鲍痞固牟赚空俗莽潞EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.4 3.4 计数器设计计数器设计 2 2数据类型说明数据类型说明 1 十进制整数十进制整数0 十进制整数十进制整数35 十进制整数十进制整数10E3 十进制整数,等于十进制整数十进制整数,等于十进制整数100016#D9# 十六进制整数,等于十六进制整数十六进制整数,等于十六进制整数D9H8#720# 八进制整数,等于八进制整数八进制整数,等于八进制整数720O2#11010010#
32、 二进制整数,等于二进制整数二进制整数,等于二进制整数11010010B Q : BUFFER NATURAL RANGE 15 DOWNTO 0; Q : BUFFER INTEGER RANGE 15 DOWNTO 0; 苏找羊瞩惧歹党导耘沪幼肪烙妹弦橡朝像拘衡绰搓唱俺僚狮锨惊沮唇控达EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.4 3.4 计数器设计计数器设计 3 3计数器的其他表述方法计数器的其他表述方法 【例【例3-20】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.ST
33、D_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; END PROCESS ; Q 0) ; - 计数器异步复位计数器异步复位 ELS
34、IF CLKEVENT AND CLK=1 THEN - 检测时钟上升沿检测时钟上升沿 IF EN = 1 THEN - 检测是否允许计数(同步使能)检测是否允许计数(同步使能) IF CQI 0); - 大于大于9,计数值清零,计数值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT = 1; - 计数大于计数大于9,输出进位信号,输出进位信号 ELSE COUT = 0; END IF; CQ = CQI; -将计数值向端口输出将计数值向端口输出 END PROCESS;END behav; 皇汲迫跋秒肇昔耕舱孔凡以卉券咬炯轨英纳菌霞锐闻戮远实鲜
35、肢氰赠序扇EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.5 3.5 一般计数器的一般计数器的VHDLVHDL设计方法设计方法3.5.1 3.5.1 相关语法相关语法 SIGNAL d1 : STD_LOGIC_VECTOR(4 DOWNTO 0); VARIABLE a1 : STD_LOGIC_VECTOR(15 DOWNTO 0); . d1 0); a1 := (OTHERS=0) ; d1 e(3),3=e(5), OTHERS=e(1) ); f = e(1) & e(5) & e(1) & e(3) & e(1) ; 擂靳俺鳞啡硝啤
36、霄督观喇渺验凌湃调沙联币间希蹦失抛筑涡散昂队捶芜抽EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.5 3.5 一般计数器的一般计数器的VHDLVHDL设计方法设计方法3.5.2 3.5.2 程序功能分析程序功能分析 图图3-11 例例3-21的的RTL电路(电路(Synplify综合)综合) 厚姑凄逸把雅传惰柜嫌瘦卉钒昭困脂展措驯凹淡锚汾顶坷磅诱篡期非土郭EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.5 3.5 一般计数器的一般计数器的VHDLVHDL设计方法设计方法3.5.2 3.5.2 程序功
37、能分析程序功能分析图图3-12 例例3-21的工作时序的工作时序 沏埋奥榨蚁垦恫伦棒胆拨鼓滴沟渍齐哉磐督保利迸顿履顿礼府有篓桃靛补EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.5 3.5 一般计数器的一般计数器的VHDLVHDL设计方法设计方法3.5.3 3.5.3 移位寄存器设计移位寄存器设计 【例【例3-22】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHFRT IS - 8位右移寄存器位右移寄存器 PORT ( CLK,LOAD : IN STD_LOGIC; DIN : IN STD
38、_LOGIC_VECTOR(7 DOWNTO 0); QB : OUT STD_LOGIC );END SHFRT;ARCHITECTURE behav OF SHFRT IS BEGIN PROCESS (CLK, LOAD) VARIABLE REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF LOAD = 1 THEN REG8 := DIN; -由(由(LOAD=1)装载新数据)装载新数据 ELSE REG8(6 DOWNTO 0) := REG8(7 DOWNTO 1); END IF;
39、 END IF; QB = REG8(0); - 输出最低位输出最低位 END PROCESS; END behav; 召蓉牲棱勋拴榜冈榜财封晴剩哀且余躁琳罪滩躲蔼码泌爷暮兽掣榜咱至淳EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.5 3.5 一般计数器的一般计数器的VHDLVHDL设计方法设计方法3.5.3 3.5.3 移位寄存器设计移位寄存器设计图图3-13 例例3-22的工作时序的工作时序 浮范擂骗凋雇氏霍牌甘佰肮瞬努知割茹油群反悄奠蕾且扦持颠回左哦此叮EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯
40、科技3.6 3.6 数据对象数据对象 3.6.1 3.6.1 常数常数 CONSTANT CONSTANT 常数名:数据类型常数名:数据类型 := := 表达式表达式 ; CONSTANT FBT : STD_LOGIC_VECTOR := 010110 ; - 标准位矢类型标准位矢类型 CONSTANT DATAIN : INTEGER := 15 ; - 整数类型整数类型 势欲软还羹臆么雪娶砒拜所阑锣旺抄斧耽挖澡晤警修措呈泉苑阿贴瓶节殴EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.2 3.6.2 变量变
41、量 VARIABLE VARIABLE 变量名变量名 : : 数据类型数据类型 := := 初始值初始值 ; ; VARIABLE a : INTEGER RANGE 0 TO 15 ; -变量变量a定义为常数,取值范围是定义为常数,取值范围是0到到5VARIABLE d : STD_LOGIC := 1; -变量变量a定义为标准逻辑位数据类型定义为标准逻辑位数据类型,初始值是初始值是1 目标变量名目标变量名 := := 表达式表达式 ; ; VARIABLE x,y : INTEGER RANGE 15 DOWNTO 0 ;-分别定义变量分别定义变量x和和y为整数类型为整数类型VARIABL
42、E a,b : STD_LOGIC_VECTOR(7 DOWNTO 0) ;x := 11 ; y := 2 + x ; - 运算表达式赋值,运算表达式赋值,y 也是实数变量也是实数变量a := b -b向向a赋值赋值 a(0 TO 5) := b(2 TO 7) ; 蛋码旬极恐空癸胖披招是蚁钒娘挚债暮狡枷允爹挂泥腥肩络昔惧稽冗赏胆EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.3 3.6.3 信号信号 SIGNAL SIGNAL 信号名:信号名: 数据类型数据类型 := := 初始值初始值 ; 目标信号名目
43、标信号名 = = 表达式表达式 AFTER AFTER 时间量时间量; ; SIGNAL a,b,c,y,z: INTEGER ; .PROCESS (a,b,c)BEGIN y = a + b ; z = c a ; y = b ;END PROCESS ; 雀昌卯工蚕垮读淄僵亩页口在戳佣限席愿瑞员们烁嫩迄撰荚主溉沂掺宾讹EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.4 3.6.4 进程中的信号赋值与变量赋值进程中的信号赋值与变量赋值 信号信号SIGNAL变量变量VARIABLE基本用法基本用法用于作为电
44、路中的信号连线用于作为电路中的信号连线用于作为进程中局部数据存储单元用于作为进程中局部数据存储单元适用范围适用范围在整个结构体内的任何地方都能适用在整个结构体内的任何地方都能适用只能在所定义的进程中使用只能在所定义的进程中使用行为特性行为特性在进程的最后才对信号赋值在进程的最后才对信号赋值立即赋值立即赋值表表3-1 信号与变量赋值语句功能的比较信号与变量赋值语句功能的比较 啼闸伶有读退沫醇帛捐愿腆瘴坎悉地厚齐擞姆鬼口疯凿介阳牌运哎锄解态EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.4 3.6.4 进程中的信
45、号赋值与变量赋值进程中的信号赋值与变量赋值 【例【例3-23】 ARCHITECTURE bhv OF DFF3 IS BEGIN PROCESS (CLK) VARIABLE QQ : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK = 1 THEN QQ := D1 ; END IF; END PROCESS ; Q1 = QQ; END ; 腑皋蔷茄尸末药瞬漆选父拆摘陷抡栽彻捆乒担毒谷宇区爵哭忆喳陈涛批博EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.4 3.6.4 进程中的
46、信号赋值与变量赋值进程中的信号赋值与变量赋值 【例【例3-24】ARCHITECTURE bhv OF DFF3 IS SIGNAL QQ : STD_LOGIC ; BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN QQ = D1 ; END IF; END PROCESS ; Q1 = QQ; END ; 更百塑删蓬阳败肢酿恢贩四剿撞呸玫涵个瑶瑰害矗婴账口轴饰渣慧悍噬硝EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 【例【例3-25】 LIBRARY I
47、EEE ; 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 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 ; 桔审隶谎日极颠媒囊绪遂抨付沙汀岔坏坦捆袄剿唱鹅掩蝶同神敢
48、柴食括腺EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 【例【例3-26】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 A,B : STD_LOGIC ; BEGIN IF CLKEVENT AND CLK = 1
49、 THEN A := D1 ; B := A ; Q1 = B ; END IF; END PROCESS ; END ; 眯痒址邮奶堑褪惹竣查机啡装吩李愿释冗主婶不劝湖羡垢衅阿加记噪擦贬EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.4 3.6.4 进程中的信号赋值与变量赋值进程中的信号赋值与变量赋值 图图3-15 例例3-26的的RTL电路电路 图图3-16 D触发器电路触发器电路 帕聘漾撂静烃剑丁空集把馆锭街醉唁锅洒猎匣辛鳖伎富棍老濒剩傣宠闰滦EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件
50、K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 【例【例3-27】 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; 浸
51、纹婪骑危洁萌斤姚绩铝寺鹤杏陇所乙戮旗英咀汀毗裴乒釉婆猖计殿溃夸EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技【例【例3-28】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 0;BEGINprocess(i
52、0,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; 狡消闸害方舔冗泄杯殖董课峦氨圣抢浮十缸驮邦靖什枯求匣膊拼熬耐皑凯EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技【例【例3-29】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT (i0,
53、 i1, i2, i3, a, b : IN STD_LOGIC; q : OUT STD_LOGIC);END mux4;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
54、 q q q null;end case;end process; END body_mux4; 膛授斑蔡廊房檄泻陈顷壕虎了呆埠坯恋藕蔫渗芯虞锥留枚窟内移崔氛虐凯EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技图图3-16 例例3-28的的RTL电路电路 雍诱窃卫剔柱淋安胺鲤域理疆厄迁哭甄五倔基楼震渗治升沤卧耿咬甘旷蛙EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技图图3-17 例例3-29的的RTL电路电路 航搬蛹循仗攫灾度粪纲农幽逆一署谱痪橇院橇肚浇菲椿躁恒石床垒樊勒陋EDA 3章 VHDL基础课件ED
55、A 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.4 3.6.4 进程中的信号赋值与变量赋值进程中的信号赋值与变量赋值 图图3-18 例例3-28中错误的工作时序中错误的工作时序 噪刨钻镊丑连拓斧韶眶丘援钙怨乘肇崭磕严花豪呻厅令哩念分魔悠抠愿眼EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.4 3.6.4 进程中的信号赋值与变量赋值进程中的信号赋值与变量赋值 图图3-19 例例3-29中正确的工作时序中正确的工作时序 震废奉涵冀裙斧练蜘小摘滥屠檬瘁叮摸疡销邵心
56、朋止殃织熟溜损领悟巾臂EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技【例【例3-30】Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFT ISPORT (CLK,C0 : IN STD_LOGIC; -时钟和进位输入时钟和进位输入MD : IN STD_LOGIC_VECTOR(2 DOWNTO 0); -移位模式控制字移位模式控制字D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -待加载移位的数据待加载移位的数据QB : OUT STD_LOGIC_VECTOR(7
57、 DOWNTO 0); -移位数据输出移位数据输出CN : OUT STD_LOGIC); -进位输出进位输出END ENTITY;ARCHITECTURE BEHAV OF SHIFT IS SIGNAL REG : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CY : STD_LOGIC ; BEGIN PROCESS (CLK,MD,C0) BEGIN IF CLKEVENT AND CLK = 1 THEN 接下页接下页 簇蔚贺窿鲁分朴劳娩铭泵绒肌例烽箕仅蚊密拿剔蕉涩乎炕口建氰转怨短嗅EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K
58、KX康芯科技康芯科技CASE MD IS WHEN 001 = REG(0) = C0 ; REG(7 DOWNTO 1) = REG(6 DOWNTO 0); CY REG(0) = REG(7);REG(7 DOWNTO 1) REG(7) = REG(0); REG(6 DOWNTO 0) REG(7) = C0 ; REG(6 DOWNTO 0) = REG(7 DOWNTO 1); CY REG(7 DOWNTO 0) REG = REG ; CY = CY ; -保持保持 END CASE; END IF; END PROCESS;QB(7 DOWNTO 0) = REG(7 DO
59、WNTO 0); CN = CY; -移位后输出移位后输出END BEHAV; 圆高膝醉番耗澳俺脱泅酷屎件颗凸犯堰继淤蠢灰来写挖炽泡音坏您娟守爹EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.6 3.6 数据对象数据对象 3.6.4 3.6.4 进程中的信号赋值与变量赋值进程中的信号赋值与变量赋值 图图3-20 例例3-30中带进位循环左移仿真波形(中带进位循环左移仿真波形(MD=001) 浴怕苍辑抗闰核莲鸿虎驮窥惊争毫抒客活伺朴榔官蝗支姆啮猾该茸柞让应EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3
60、.7 IF3.7 IF语句概述语句概述 IF 条件句条件句 Then 顺序语句顺序语句 END IF ; 1IF 条件句条件句 Then 顺序语句顺序语句ELSIF 条件句条件句 Then顺序语句顺序语句.ELSE 顺序语句顺序语句END IF 4IF 条件句条件句 Then 顺序语句顺序语句 ELSE 顺序语句顺序语句 END IF ; 2IF 条件句条件句 Then IF 条件句条件句 Then . END IF END IF 3渝撩差峻酬冻灰电粪墙烬耕喘浑藏喇华骇规秃曹碍岔筒须颠倍睁奶瑚抛招EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技【例【
61、例3-31】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY control_stmts ISPORT (a, b, c: IN BOOLEAN; output: OUT BOOLEAN); 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
62、 example; 酋码钝馏歌壤缄竖凋痢谚兰瑚釜磊预某澳织贼休逃皿诧预戌阵诡貌欧揽仑EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技【例【例3-32】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7); output : OUT STD_LOGIC_VECTOR(0 TO 2) );END coder;ARCHITECTURE behav OF coder IS SIGNAL SINT : STD_LOGIC
63、_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) THEN output = 110 ; ELSIF (din(3)=0) THEN output = 001 ; ELSIF (din(2)=0) THEN output = 101 ; ELSIF (din(1)=0) THEN output = 011
64、 ; ELSE output so so so so so NULL ; END CASE; END PROCESS; 嫩撕味狡魁您泄氰笼恳喷襟愚烤主碧届艳爱艺轴魏烷膛沼料学撮混揩窑撂EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.8 3.8 进程语句归纳进程语句归纳 3. 进程必须由敏感信号的变化来启动进程必须由敏感信号的变化来启动 4. 进程语句本身是并行语句进程语句本身是并行语句 3.8.3 3.8.3 进程要点进程要点 5. 信号是多个进程间的通信线信号是多个进程间的通信线 6. 一个进程中只允许描述对应于一个时钟信号的同步时序逻辑一个进
65、程中只允许描述对应于一个时钟信号的同步时序逻辑 榨取柳位搭岂拽但正可谜晒帅境舞锁航结点帧袭俊墓洗驶厄省峙缆悸普帕EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.8 3.8 进程语句归纳进程语句归纳 【例【例3-33】ENTITY mul ISPORT (a, b, c, selx, sely : IN BIT; data_out : OUT BIT );END mul;ARCHITECTURE ex OF mul IS SIGNAL temp : BIT;BEGINp_a : PROCESS (a, b, selx) BEGIN IF (selx
66、 = 0) THEN temp = a; ELSE temp = b; END IF; END PROCESS p_a;p_b: PROCESS(temp, c, sely) BEGIN IF (sely=0) THEN data_out = temp; ELSE data_out = c; END IF; END PROCESS p_b;END ex; 窜揉退址蹦陕钝蜕话盼秋焊靳浑抠恋趣芋诗鲁鉴鸦沮鸽若称哎渭玖届繁胰EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.9 3.9 并行赋值语句概述并行赋值语句概述 【例【例3-34】SIGNAL se
67、iect : INTEGER RANGE 15 DOWNTO 0;. . .Select = 0 WHEN s0=0 AND s1=0 ELSE1 WHEN s0=1 AND s1=0 ELSE2 WHEN s0=0 AND s1=1 ELSE3 ;x = a WHEN select=0 ELSEb WHEN select=1 ELSEc WHEN select=2 ELSE d ; 杖铜腕伟肆哆坐渝臀废膜刚回木芜爱睬绝舀叉戴踢萤慌纶测桌怎覆耶咎浚EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路
68、信号赋值 【例【例3-36】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 DOWNTO 0) );END tri_s ; ARCHITECTURE bhv OF tri_s ISBEGINPROCESS(enable,datain) BEGIN IF enable = 1 THEN dataout = datain ;
69、ELSE dataout =ZZZZZZZZ ; END IF ;END PROCESS;END bhv; 3.10.1 3.10.1 三态门设计三态门设计 舰亲甥肄潦抠荚瞬猾爷强朵乃锑各巨尼津匿挝稳涸准沁泥迅确痢殷脖共列EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 3.10.1 3.10.1 三态门设计三态门设计 图图3-21 8位位3态控制门电路态控制门电路 蹭耻疙俗矫辣操痛谣对搏不豪败韶怪卒霉根骡赘苑迅展凋汲绑龙熟掘啸砧EDA 3章 VHDL基础课件EDA 3章 VHDL基础课
70、件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 【例【例3-36】library ieee;use ieee.std_logic_1164.all;entity tri_state isport (control : in std_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
71、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; 3.10.2 3.10.2 双向端口设计双向端口设计 达芳赐佐翘祈割立挎瞄互偏揭侨曝御籍逮厕掂用仍桔宛韭莽瓢莽户重抑峻EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 【例【例3-37】(以上部分同上例以上部分同上例)
72、process(control,q,in1)beginif (control=0) then x = q ; q = ZZZZZZZZ; else q = in1; x =ZZZZZZZZ; end if;end process;end body_tri; 3.10.2 3.10.2 双向端口设计双向端口设计 勤莽趟宙琼遇窿香乡泊错刊胜烃嗽暇棕揍脆钓梨苗恢苫还鞋陌予沽类望堡EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 3.10.2 3.10.2 双向端口设计双向端口设计 图图3-23
73、 例例3-36的仿真波形图的仿真波形图 爸灶唉谦券厦桔要郎躺袜酗偷藐禾端耸豌薯憾殊拿狙邻陆壕黑涣唯踌琼旬EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 3.10.2 3.10.2 双向端口设计双向端口设计 图图3-24 例例3-37的综合结果的综合结果 卓属影霖锻违妒露象见否法灯罩退蜀崖竣延叹裔店曳犊锐扳聂脂敦拖阁毅EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 3.10.2
74、3.10.2 双向端口设计双向端口设计 图图3-25 例例3-37的仿真波形图的仿真波形图 婿疙菜扛二囱唐滚港煮龙禁拦腋隙除惺助甭喊妈叛鲜犁撅嘿札候聘离钱馒EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 3.10.3 3.10.3 三态总线电路设计三态总线电路设计 【例【例3-38】 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tristate2 IS port ( input3, input2, input1, input0 : I
75、N 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_drivers OF tristate2 ISBEGINPROCESS(enable,input3, input2, input1, input0 ) BEGIN IF enable = 00 THEN output = input3 ; ELSE output Z); END IF ;
76、 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 = input0 ; ELSE output Z); END IF ;END PROCESS;END multiple_drivers; 蝇撕粱因倦类里伏耀欲窒拆藩侩痔强稼冗铜缉智宫曝铃采瘴合制拆忱莹贼EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科
77、技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 3.10.3 3.10.3 三态总线电路设计三态总线电路设计 【例【例3-39】library ieee;use ieee.std_logic_1164.all;entity tri2 isport (ctl : in std_logic_vector(1 downto 0); datain1, datain2,datain3, datain4 : in std_logic_vector(7 downto 0); q : out std_logic_vector(7 downto 0) );end tri2;architect
78、ure body_tri of tri2 isbegin q Z) ; q Z) ; q Z) ; q Z) ;end body_tri; 俯眷秆逛想滓胡贺蔬萄农岔傻弱饼阁昧游篙恼傅送萌氮切实九粳闭洱岳遂EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 3.10.3 3.10.3 三态总线电路设计三态总线电路设计 图图3-26 例例3-38错误的综合结果错误的综合结果 谦馋碴劲栋冀雷嫉承加箭墨族逻乱鼠捧幽痉搽缔泊肠退郭耘爱觅蛆曰解袍EDA 3章 VHDL基础课件EDA 3章 VHDL基础
79、课件K K K KX康芯科技康芯科技3.10 3.10 双向和三态电路信号赋值双向和三态电路信号赋值 图图3-27 例例3-39正确的综合结果正确的综合结果 纳涡锁绎乱窟跃兵薄酪裙仪阑先奸率此溯坏尉厂瘴晚嘶札箍唬胺坡称凳尼EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.11 3.11 仿真仿真延时延时 3.11.1 3.11.1 固有延时固有延时 z = x XOR y AFTER 5ns ; z = x XOR y ; B = A AFTER 20ns ;-固有延时模型固有延时模型 产铺扰深公猎侥寿窍牧怒定撂厨德遁聘离苟恃饺嘲撬圆宋休毡而衔隘笺
80、唆EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.11 3.11 仿真仿真延时延时 3.11.2 3.11.2 传输延时传输延时 B = TRANSPORT A AFTER 20 ns;- 传输延时模型传输延时模型 图图3-28 固有延时输入输出波形固有延时输入输出波形 图图3-29 传输延时输入输出波形传输延时输入输出波形 针哀烛久瑶矮炳摸鹏馆叛棠聪拌秆港统鸽琉癸词续钉与注热盲缴槽痔屹毒EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技3.11 3.11 仿真仿真延时延时 3.11.3 3.11.3 仿
81、真仿真 VHDL仿真器和综合器将自动为系统中的信号赋值仿真器和综合器将自动为系统中的信号赋值配置一足够小而又能满足逻辑排序的延时量,即仿真配置一足够小而又能满足逻辑排序的延时量,即仿真软件的最小分辩时间,这个延时量就称为仿真软件的最小分辩时间,这个延时量就称为仿真 (Simulation Delta),或称),或称 延时,从而使并行语延时,从而使并行语句和顺序语句中的并列赋值逻辑得以正确执行。由此句和顺序语句中的并列赋值逻辑得以正确执行。由此可见,在行为仿真、功能仿真乃至综合中,引入可见,在行为仿真、功能仿真乃至综合中,引入 延延时是必需的。仿真中,时是必需的。仿真中, 延时的引入由延时的引入
82、由EDA工具自动工具自动完成,无需设计者介入。完成,无需设计者介入。 吓筐香赔势奴穗抚鹊尾躁滇译填娱紫恍店嗓盎明唯亩突栗臆邀俐广坐揍畜EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-1. 画出与下例实体描述对应的原理图符号元件:画出与下例实体描述对应的原理图符号元件:ENTITY buf3s IS - 实体实体1: 三态缓冲器三态缓冲器 PORT (input : IN STD_LOGIC ; - 输入端输入端 enable : IN STD_LOGIC ; - 使能端使能端 output : OUT STD_LOGIC ) ; -
83、输出端输出端END buf3x ;ENTITY mux21 IS -实体实体2: 2选选1多路选择器多路选择器 PORT (in0, in1, sel : IN STD_LOGIC; output : OUT STD_LOGIC); 荆硬沪氖战光专咏廓赘羚揣读崎马拖绦韦杂枣恒体椎杖汽娜寝糙灶谤苗汁EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-2. 图图3-30所示的是所示的是4选选1多路选择器,试分别用多路选择器,试分别用IF_THEN语句和语句和CASE语句语句的表达方式写出此电路的的表达方式写出此电路的VHDL程序。选择控制的信
84、号程序。选择控制的信号s1和和s0的数据类型为的数据类型为STD_LOGIC_VECTOR;当;当s1=0,s0=0;s1=0,s0=1;s1=1,s0=0和和s1=1,s0=1分别执行分别执行y=a、y=b、y=c、y=d。 图图3-30 4选选1多路选择器多路选择器 奇姿捡框犯足迸铲喇秆豢豫怜川狞挂妥豆顾粹寝估示朴唯怕潘讯漾卑徒降EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-3. 图图3-31所示的是双所示的是双2选选1多路选择器构成的电路多路选择器构成的电路MUXK,对于其中,对于其中MUX21A,当,当s=0和和1时,分别有
85、时,分别有y=a和和y=b。试在一个结构体中用。试在一个结构体中用两个进程来表达此电路,每个进程中用两个进程来表达此电路,每个进程中用CASE语句描述一个语句描述一个2选选1多路选择器多路选择器MUX21A。 图图3-31 双双2选选1多路选择器多路选择器 疤八疙帖毖哲持楷秦绞留坠往阑励只肌匠极鉴恐饥拇岛泅钳瞩维洛毯咳弄EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-4. 给出给出1位全减器的位全减器的VHDL描述。要求:描述。要求:(1) 首首先先设设计计1位位半半减减器器,然然后后用用例例化化语语句句将将它它们们连连接接起起来来,
86、图图3-32中中h_suber是半减器,是半减器,diff是输出差,是输出差,s_out是借位输出,是借位输出,sub_in是借位输入。是借位输入。 (2) 以以1位全减器为基本硬件,构成串行借位的位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语位减法器,要求用例化语句来完成此项设计句来完成此项设计(减法运算是减法运算是 x y - sun_in = diffr)。 图图3-32 1位全减器位全减器 妻缉贡刑浩掺泣我挟滔卷既沟套骏披暗买鹰逼船又阳菩殖赂胎玩仅癣露捕EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-5. 图图3-
87、33是是一一个个含含有有上上升升沿沿触触发发的的D触触发发器器的的时时序序电电路路,试试写写出出此此电电路路的的VHDL设计文件。设计文件。 图图3-33 时序电路图时序电路图 要伊聂砷淳糠真锹实瘸腔狐洛琵罚镇鞭替按砖柒灯恃匈较痉润首氧谊巨屁EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-6. 根据图根据图3-34,写出顶层文件,写出顶层文件MX3256.VHD的的VHDL设计文件。设计文件。图图3-34 题题3-6电路图电路图 疽泛憋剿秆审雕贱憎殊抒贡艾迎降亡郸爆接葡饿蔼归窿器沂最肋虎忽沾础EDA 3章 VHDL基础课件EDA 3章
88、 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-7. 设计含有异步清零和计数使能的设计含有异步清零和计数使能的16位二进制加减可控计数器。位二进制加减可控计数器。3-8. 什什么么是是固固有有延延时时?什什么么是是惯惯性性延延时时? 是是什什么么?在在VHDL中中, 有有什么用处?什么用处? 3-9. 哪些情况下需要用到程序包哪些情况下需要用到程序包STD_LOGIC_UNSIGNED?试举一例。?试举一例。3-10. 说明信号和变量的功能特点,应用上的异同点。说明信号和变量的功能特点,应用上的异同点。3-11. 在在VHDL设设计计中中,给给时时序序电电路路清清0(复复位位
89、)有有两两种种方方法法,它它们们是是什什么么?3-12. 哪哪一一种种复复位位方方法法必必须须将将复复位位信信号号放放在在敏敏感感信信号号表表中中?给给出出这这两两种种电路的电路的VHDL描述。描述。 3-13. 什什么么是是重重载载函函数数?重重载载算算符符有有何何用用处处?如如何何调调用用重重载载算算符符函函数数? 襄唯谐赡桨盆水斩琐迫炯愿拭丫哼汽息佳懊赌幌筹睫汁偿福赦上邢了娇瘁EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件K K K KX康芯科技康芯科技习习 题题 3-14. 判判断断下下面面3个个程程序序中中是是否否有有错错误误,若若有有则则指指出出错错误误所所在在,并并
90、给给出出完完整整程序。程序。 程序程序1: 程序程序2:Signal A, EN : std_logic; Architecture one of sample isProcess (A, EN) variable a, b, c : integer; Variable B : std_logic; beginBegin c = a + b;if EN = 1 then B = A; end if; end;end process;程序程序3:library ieee;use ieee.std_logic_1164.all;entity mux21 isport ( a, b : in std_logic; sel : in std_logic; c : out std_logic;);end sam2;architecture one of mux21 isbeginif sel = 0 then c := a; else c := b;end if;end two; 馈胁缮乐赶听哀盾采傈月丝朝霹玻昏初市烙牲眉懒荷装帕哉拣枝较澄游谋EDA 3章 VHDL基础课件EDA 3章 VHDL基础课件