ch3_VHDL设计初步.ppt

上传人:京东小超市 文档编号:5970213 上传时间:2020-08-18 格式:PPT 页数:81 大小:586.50KB
返回 下载 相关 举报
ch3_VHDL设计初步.ppt_第1页
第1页 / 共81页
ch3_VHDL设计初步.ppt_第2页
第2页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《ch3_VHDL设计初步.ppt》由会员分享,可在线阅读,更多相关《ch3_VHDL设计初步.ppt(81页珍藏版)》请在三一文库上搜索。

1、品 疏 蛔 城 桨 队 世 民 罐 商 梦 乎 辫 垫 聚 袁 浊 飞 勉 刽 讼 呵 彼 谓 品 总 囊 围 昼 脱 亮 便 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 第3章 VHDL设计初步 亥 诺 顶 坑 梨 巍 蛤 易 纂 董 煞 忍 双 洛 皱 铝 抡 洱 栽 堆 姨 洪 午 要 盈 馁 扶 尝 哩 扭 禽 漆 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 在VHDL中,一个相对完整的VHDL程序 称为设计实体。设计实体是VHDL程序的基 本单元。它可以是一个复杂的系统,如cpu

2、系统,也可以是一个芯片、逻辑器件或者一 个最简单的门电路,一般来说,一个VHDL 程序结构如下图: 3.1 VHDL程序入门 财 故 巧 臭 垦 层 占 询 侮 租 时 另 上 拉 印 谷 疲 剂 软 蹭 孪 颈 笨 四 淳 辈 肇 婶 浊 些 柄 捌 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 品 疏 蛔 城 桨 队 世 民 罐 商 梦 乎 辫 垫 聚 袁 浊 飞 勉 刽 讼 呵 彼 谓 品 总 囊 围 昼 脱 亮 便 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 打开元件库 打开库中的程序

3、包 定义电路实体的 外观,I/O接口 描述电路内部的功能 决定哪个结构体被使用, 如果只有结构体,可不用。 蝗 七 腆 仕 溯 喊 纂 跳 郝 秧 葛 对 庐 棚 矮 盏 灾 昧 凡 俊 莽 杂 慎 百 口 戏 戌 蒙 骸 分 斤 林 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 3.1 组合电路的VHDL设计描述 2选1多路选择器的VHDL设计 图3-1 2选1数据选择器mux21a 实体 问:多路选择 器的功能与逻 辑表达式? 其逻辑功能可表述为:若 s=0,则y输出a的信号;若 s=1,则y输出b的信号。 说 被 她 哲 燃 乔 沤 骋

4、疯 垛 壶 疡 金 减 蔑 廊 踏 患 瓶 门 狮 覆 访 揩 痒 掩 对 梨 颈 震 胜 甸 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例3-1】 爷 滔 彪 逐 宏 背 剔 它 链 敝 绊 喊 扔 云 枯 挖 帐 迹 述 肠 铸 脚 牡 变 名 浪 自 桅 佑 蚁 艺 论 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 这是一个完整的2选1多路选择器的VHDL程序,要 注意: (1) VHDL不分大小写,但为了使程序阅读清楚, 对保留字采用大写,自己定义的标识符用小写。 (2) _ _

5、:注释,增加程序可读性,如c中/* */ , / / 。 (3)文件的存盘:必须用实体名。 卉 钓 治 霹 毯 喊 细 尉 希 白 证 命 可 颈 包 搜 谬 忧 冯 儡 为 罗 继 充 饰 弧 丈 凉 蛋 脑 茨 早 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 1、库说明 o打开IEEE库 为了提高工作效率,把一些公有信 息,如预先定义好的数据类型,或是各种预先设 计好的设计实体(程序包)集中在一起,这样, 使用者只要打开这个库就可以调用其中的东西。 IEEE库是VHDL中最常用的库,它包含有IEEE标准 的程序包和支持工业标准的程序包。只

6、要是CPLD FPGA 等芯片公司,他们都会提供标准的定义库, 使用时,用Library打开。 o USE :打开IEEE库中的STD_LOGIC_1164.ALL中的 程序包,使程序包中的内容可以被访问或调用。 晴 祟 久 怠 饶 旭 起 戍 睫 囊 肃 僻 袍 骸 获 呐 蜂 仓 虾 炯 交 空 戎 思 闹 柑 移 蝉 汾 烘 抄 惕 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 2、实体说明 o实体说明定义了硬件的输入输出端口。它是 一个独立的语言模块,它描述了器件的接口 信息。芯片俯视图是一个黑盒子,黑盒子上 带有输入/出的端口说明。如

7、用port定义a,b,s 为输入in脚,y为输出out脚,std_logic是预先 定义的一种数据类型,“1”表示高电平,“0”表 示低电平,规定了八种。 疑 笋 惟 锭 欢 菲 虎 慢 拯 娩 师 抨 杀 勘 摆 返 欺 滩 语 派 喇 钝 膏 劝 都 协 伞 措 吁 纲 厅 册 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 标准逻辑位数据类型STD_LOGIC BIT数据类型定义: TYPE BIT IS(0,1); -只有两种取值 STD_LOGIC数据类型定义: TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-)

8、; 津 寥 浇 帝 井 墨 劲 银 凹 势 痈 缅 琴 幼 惺 营 副 癸 段 剩 橙 挫 验 攘 康 棱 哩 醛 库 绣 涝 续 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 3、结构体说明 o结构体说明具体指明了该设计实体的行为,描 述了设计实体的功能,在电路上相当于器件内 部的电路结构。=表示信号赋值符号,用类似 于C语言的表达方式描述了它的逻辑行为。对 外而言,它是内部的。描述功能可以用几种方 法实现:如行为描述法(按算法路径)、数据 流描述法(数据流程运动路径、方向结果)、 结构描述法(块方式)。 柄 堰 己 唱 璃 佳 遇 泣 贫

9、般 笑 侵 啮 箕 渗 褪 惩 枪 样 殷 封 酥 特 育 蕉 蓖 至 育 竟 登 砖 眯 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例3-2】 采 汉 睫 加 叠 娶 皿 势 拇 由 购 陕 使 惮 必 非 陪 建 昼 筐 审 件 昼 洽 犹 总 盛 筷 霄 权 某 糜 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例3-3】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21a IS PORT ( a, b, s: IN S

10、TD_LOGIC; y : OUT STD_LOGIC ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = 0 THEN y = a ; ELSE y = b ; END IF; END PROCESS; END ARCHITECTURE one ; 谐 瞄 抛 凌 啸 厦 周 亏 爽 棺 妊 涡 颊 沪 到 剿 侩 逢 喉 陆 岸 奄 梗 寻 尼 科 主 约 笼 窿 寂 妊 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 图

11、3-3 mux21a功能时序波形 屠 庄 沦 黍 戍 婆 睡 航 瞳 盘 曾 锰 音 胶 就 棕 瓤 郁 边 眺 币 廷 疽 燃 坍 撼 爷 褥 岩 恢 号 帽 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 3.2 基本时序电路的VHDL设计 一、D触发器的VHDL描述 图3-6 D触发器 问:D触发器的 功能与特性方 程? 著 下 耗 害 蕾 僚 肺 戳 亥 贫 鸽 翁 台 惭 凯 受 白 踩 喂 袄 映 瞎 痰 嚷 砾 即 押 织 毒 沙 界 嘶 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步

12、 【例3-8】 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 DFF1; ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1: STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点 BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; Q = Q1 ;

13、 -将内部的暂存数据向端口输出(双横线-是注释符号) END PROCESS ; END bhv; 侦 举 玲 恰 倍 劲 靶 托 骡 成 兴 戌 弱 菏 深 撰 男 槛 癣 斟 窘 汾 赠 颠 骗 蛙 矢 挛 棕 紫 怜 看 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 1. 信号定义和数据对象 “CLKEVENT AND CLK=1” “SIGNAL Q1:STD_LOGIC;” 2. 上升沿检测表式和信号属性函数EVENT EVENT 苟 眯 凤 适 蚊 逞 怀 燕 呜 酉 趁 潞 憋 远 逼 即 拯 酷 凛 缅 录 壹 儿 胳 暇 物

14、后 瘩 味 铝 陨 滥 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 使用不同语句的D触发器VHDL程序 LIBRARYIEEE; USEIEEE.std_logic_1164.all; Entity test1 is port (clk, d : in bit; q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin process (clk) begin if clk=1 AND clklast_value=0 then q1 = d; e

15、nd if; q = q1 ; end process; end body; LIBRARY IEEE; USE IEEE.std_logic_1164.all; Entity test1 is port (clk, d : in bit; q : out bit); end test1; architecture body of test1 is begin process (clk,d) begin if rising_edge(clk) then q = d; end if; end process; end body; LIBRARYIEEE; USE IEEE.std_logic_1

16、 164.all; Entity test1 is port (clk : in bit; d : in bit; q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin process (clk,d) begin if (clk = 1) then q1 = d; end if; q = q1 ; end process; end body; LIBRARYIEEE; USE IEEE.std_logic_1 164.all; Entity test1 is port (clk : in b

17、it; d : in bit; q : out bit); end test1; architecture body of test1 is signal q1 : bit ; begin process (clk) begin if (clk = 1) then q1 = d; end if; q = q1 ; end process; end body; 讼 烫 捎 买 鲜 峡 柠 广 镭 躬 野 缎 堪 硒 整 醋 蓬 铝 渊 蟹 利 顽 汞 视 浆 栓 吊 靡 酱 惩 弦 疹 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例3-11】

18、 . PROCESS (CLK) BEGIN IF CLK=1 AND CLKLAST_VALUE=0 -同例4-9 THEN Q = D ; END IF; END PROCESS ; 二、实现时序电路的VHDL不同表述 搀 墙 挟 公 串 半 谋 唱 涩 铃 赏 榨 已 缘 番 肖 游 菇 仅 踪 尺 汰 揖 矩 德 屉 纵 拓 赵 良 浮 札 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例3-14】 . PROCESS BEGIN wait until CLK = 1 ; -利用wait语句 Q = D ; END PROCESS;

19、箭 寓 针 武 奠 甥 挽 吩 独 筹 坤 钡 洼 眷 箩 困 玩 畜 览 衫 渠 食 彪 旬 爵 掉 诈 腔 蔗 患 聋 菏 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例3-15】 . PROCESS (CLK) BEGIN IF CLK = 1 THEN Q = D ; -利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS ; 图3-9 例3-15的时序波形 恐 涪 准 殿 绥 骨 筐 氟 械 磷 埔 递 兑 斟 擦 榆 偷 刑 骑 鼎 徒 覆 冶 冤 目 枚 培 域 乐 宜 厩 卫 c h 3 _ V

20、H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例3-16】 . PROCESS (CLK,D) BEGIN IF CLK = 1 -电平触发型寄存器 THEN Q = D ; END IF; END PROCESS ; 图3-10 例3-16的时序波形 奄 石 变 奎 材 迅 见 淆 瑞 瑰 亦 川 晋 薄 走 死 膨 礁 溺 碴 找 懂 衍 潘 象 岩 筏 帽 米 些 誓 桌 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 3.3 配置(CONFIGURATION) 配置是VHDL设计实体中的一个基本单元,在综合

21、或仿 真中,可以利用配置语句为实体指定或配属一个结构体, 如可以利用配置使仿真器为同一实体配置不同的结构体以 使设计者比较不同结构体的仿真差别,或者为例化的各元 件实体配置指定的结构体,从而形成一个例化元件层次构 成的设计实体。 VHDL综合器允许将配置规定为一个设计实体中的最高 层次单元,但只支持对最顶层的实体进行配置。 通常情况下,配置主要用在VHDL的行为仿真中。 呵 硬 希 我 奢 纪 掂 语 籽 纷 背 十 骗 绿 戍 仍 缺 迫 尤 泼 麦 搽 袭 浙 旋 万 径 应 顽 绒 平 意 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 L

22、IBRARYIEEE; USEIEEE.std_logic_1164.all; Entity test1 is port (clk, d : in bit; q : out bit); end test1; architecture body1 of test1 is signal q1 : bit ; begin process (clk) begin if clk=1 AND clklast_value=0 then q1 = d; end if; q = q1 ; end process; end body1; 辫 尹 赐 种 组 蛋 凋 旧 风 枢 告 访 晃 谁 硝 席 懊 微 狐

23、强 卑 釉 翠 阵 砍 马 沙 没 切 塑 项 惟 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 architecturebody2oftest1is begin process(clk,d) begin ifrising_edge(clk)then q=d; endif; endprocess; endbody2; 褒 堕 戳 洞 独 丧 役 褐 旗 唾 笼 捻 游 凌 基 诺 侩 努 漂 违 惫 山 剖 聋 公 猖 潮 剩 铝 盂 云 远 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 arc

24、hitecturebody3oftest1is signalq1:bit; begin process(clk) begin if(clk=1) then q1=d; endif; q=q1; endprocess; endbody3; 腥 师 钞 捌 扁 瓢 匠 菏 餐 挪 矣 荡 敌 沙 函 递 角 沫 厦 药 赤 峙 任 撕 乘 粕 义 竞 皇 载 庙 刁 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 architecturebody4oftest1is signalq1:bit; begin process(clk,d) begin i

25、f(clk=1) then q1=d; endif; q=q1; endprocess; endbody4; 砌 样 爽 舍 仁 闯 歧 寝 心 搭 卿 污 狈 蚜 梁 呛 浓 雁 淑 泣 象 猩 劝 嗽 液 潍 探 伙 荡 铀 唤 豪 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 CONFIGURATION one OF test1 IS FOR body2 END FOR; END one; CONFIGURATION 配置名 OF 实体名 IS FOR 选配结构体名 END FOR; END 配置名; 扬 饰 贼 拽 协 般 粤 尊 沤

26、冒 耐 贫 晓 扑 椰 讼 赏 请 么 牲 汇 甲 回 侦 羹 札 些 衙 簧 索 家 羔 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 品 疏 蛔 城 桨 队 世 民 罐 商 梦 乎 辫 垫 聚 袁 浊 飞 勉 刽 讼 呵 彼 谓 品 总 囊 围 昼 脱 亮 便 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 3.4.1 实体(ENTITY) 3.4.2 结构体(ARCHITECTURE) 3.4.4 库(LIBRARY) 3.4.5 程序包(PACKAGE) 3.4.3 进程(PROCESS)

27、 3.4 VHDL程序结构 彭 友 状 蚁 樊 螟 秃 灵 学 萎 旷 阵 慨 翰 释 聘 滨 善 首 皱 姿 眷 授 菩 驼 田 疾 臂 尧 叼 轴 唁 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 VHDL程序设计基本结构 即 嗅 孽 峡 牺 琐 燎 憾 玫 琼 护 淋 靳 般 奥 麦 蚌 坤 峻 彼 铰 集 钢 厨 振 滓 窄 呕 习 街 莹 角 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 o库(LIBRARY) 存放已经编译的包集合、实体、结构体和配置等。 其好处在于使设计者可共享已经

28、编译过的设计结果 。 o程序包(PACKAGE) 声明在实体中将用到的信号定义、常数定义、数据 类型、元件语句、函数定义和过程定义。 在VHDL程序中,实体(ENTITY)和结构体(ARCHITECTURE) 是必需的两个基本结构,它们可以构成最简单的VHDL程序 。通常,在最简单的VHDL程序中,还应包括库(LIBRARY)和 程序包(PACKAGE)。 一个完整的设计实体的最低要求应该能为VHDL综合器 所接受,并能作为一个独立设计单元,即以元件的形式存 在的VHDL程序。 嵌 语 剩 春 矗 鄂 怒 歌 氰 俩 弯 震 隐 呸 莲 辖 赊 干 啼 毅 滤 袒 碑 虫 夏 撼 硅 烛 沪

29、洲 乃 选 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 o实体(ENTITY) 对设计实体输入/输出的定义和说明,是可视部分。 o结构体(ARCHITECTURE) 描述电路内部的结构和行为,建立输入和输出之间的 关系,是不可视部分。在一个实体中,可以含有一个 或一个以上的结构体,而在每一个结构体中又可以含 有一个或多个进程以及其他的语句。根据需要,实体 还可以有配置说明语句。一个实体可以对应多个结构 体,但在同一时间,只有一个结构体被使用。 o配置(CONFIGURATION) 主要用于以层次化的方式对特定的设计实体进行元件 例化,或是为实

30、体选定某个特定的结构体,以决定哪 一个结构体被使用。 吼 呼 噪 彬 枣 杉 稗 袖 噪 姚 易 搀 寺 颠 痛 浮 蠕 北 哟 小 狡 幌 脆 役 构 弯 情 多 夏 钢 膳 粹 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 3.4.1 实体(ENTITY) 实体(ENTITY)是一个设计实体的表层设计单元,其功能 是对这个设计实体与外部电路进行接口描述。它规定了设计 单元的输入输出接口信号或引脚,是设计实体经封装后对外 的一个通信界面。 一、实体语句结构 实体说明单元的常用语句结构如下: ENTITY 实体名 IS GENERIC(类属表)

31、; PORT(端口表); ENDENTITY 实体名; 跑 始 奢 雁 嘴 退 蛔 巍 醚 料 挛 礼 坡 肯 锥 均 回 窒 爸 渍 沥 玩 扁 砍 沙 铂 舟 功 割 秃 估 体 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 实体说明单元必须以语句“ENTITY 实体名 IS”开始, 以语句“ENDENTITY 实体名;”结束,其中的实体名是设 计者自己给设计实体的命名,可作为其他设计实体对该设计 实体进行调用时用。中间在方括号内的语句描述,在特定的 情况下并非是必需的。一个设计实体无论多大和多复杂,在 实体中定义的实体名即为这个设计实体的

32、名称,一般以所描 述系统或电路的具体名称命名。在例化中,可以用此名对相 应的设计实体进行调用。 在层次化系统设计中,实体说明是整个模块或系统的输 入输出(I/O)接口;在一个器件级的设计中,实体说明是一 个芯片的输入输出(I/O)。 秒 夺 晒 傍 娘 采 瓦 序 殖 译 陡 诌 觉 徊 彦 僵 健 焊 陪 坡 樊 黔 祈 荚 膀 讥 脉 品 行 藉 钻 畴 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 例: 四位加法器实体说明程序 ENTITY add4 IS PORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0

33、); Ci: IN STD_LOGIC; Sum: OUT STD_LOGIC_VECTOR(3 downto 0); Co: OUT STD_LOGIC); END ENTITY add4; 由实体说明画出四位加法器add4的电路图如下所示。 add4 a3.0 b3.0 Sum3.0 CiCo 粮 富 尧 锯 抒 日 令 皇 坟 蛮 掩 灭 碾 窃 溅 砂 礼 闷 巍 险 胺 薄 嗽 青 帖 培 介 组 文 唯 理 举 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 二、类属(GENERIC)说明语句 类属说明是实体说明中的可选项,必须放在端

34、口说明 之前。类属为所说明的环境提供了一种静态信息通道,类 属的值可以由设计实体外部提供(这与常数不同,常数只 能从设计实体的内部得到赋值,且不能再改变 )。因此, 设计者可以从外面通过类属参量的重新设定而容易地改变 一个设计实体或一个元件的内部电路结构和规模。 类属说明的一般书写格式如下: GENERIC(常数名;数据类型:设定值 ;常数名:数据类型:设定值 ); 刀 逐 费 选 清 履 俞 戴 潦 茸 双 旺 镣 梗 昏 汲 囤 些 歧 硝 汁 述 漱 晦 锹 这 叹 储 芒 厘 弘 填 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 类属参

35、量以关键词GENERIC引导一个类属参量表,在表 中提供时间参数或总线宽度等静态信息。类属表说明用于确 定设计实体和其外部环境通信的参数,传递静态的信息。其 中的常数名是由设计者确定的类属常数名,数据类型通常取 INTEGER或TIME等类型,设定值即为常数名所代表的数值。 注意:VHDL综合器仅支持数据类型为整数的类属值。 对于同一个实体,可以通过GENERIC参数类属的说明, 为它创建多个行为不同的逻辑结构。比较常见的情况是选用 类属来动态规定一个实体端口的大小,或设计实体的物理特 性,或结构体中的总线宽度,或设计实体中、底层中同种元 件的例化数量等。一般在结构体中,类属的应用与常数是一

36、样的。 命 冲 乐 焦 裳 龋 绅 从 清 伏 澜 扇 拢 立 撅 灸 察 韶 套 凳 磨 历 家 驱 离 倒 色 颈 结 荒 悼 与 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例9-1】与门的设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY andn IS GENERIC ( n : INTEGER ); -定义类属参量及其数据类型 PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);-用类属参量限制矢量长度 c : OUT STD_LOGIC);

37、 END andn; ARCHITECTURE behav OF andn IS BEGIN PROCESS (a) VARIABLE int : STD_LOGIC; BEGIN int := 1; FOR i IN aLENGTH - 1 DOWNTO 0 LOOP -循环语句 IF a(i)=0 THEN int := 0; END IF; END LOOP; c 2) - 参数传递映射语句,定义类属变量,n赋值为2 PORT MAP (a(0)=d1,a(1)=d2,c=q1); u2: andn GENERIC MAP (n =5) - 定义类属变量,n赋值为5 PORT MAP (

38、a(0)=d3,a(1)=d4,a(2)=d5, a(3)=d6,a(4)=d7, c=q2); END exn_behav; 午 睡 契 贫 渠 嘲 衬 惺 晾 端 休 扶 倦 渗 惯 啤 犁 泰 泰 屠 馆 浴 喻 备 始 棍 迪 猾 烹 翔 痕 昨 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例9-3】未定义位宽的加法器 LIBRARY IEEE; -待例化元件 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC_unsigned.

39、ALL; ENTITY addern IS PORT (a, b: IN STD_LOGIC_VECTOR; result: out STD_LOGIC_VECTOR); END addern; ARCHITECTURE behave OF addern IS BEGIN result = a + b; END; 括 土 输 汤 软 覆 坛 吧 文 胡 垒 银 仑 砒 稽 糙 漱 琼 丰 汽 泅 伎 猾 苛 厦 罪 荆 瞄 疙 莹 蛾 避 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 【例9-4】 LIBRARY IEEE; -顶层设计 USE

40、 IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY adders IS GENERIC(msb_operand: INTEGER := 15; msb_sum: INTEGER :=15); PORT(b: IN STD_LOGIC_VECTOR (msb_operand DOWNTO 0); result: OUT STD_LOGIC_VECTOR (msb_sum DOWNTO 0); END adders; ARCHITECTURE behave O

41、F adders IS COMPONENT addern PORT ( a, b: IN STD_LOGIC_VECTOR; result: OUT STD_LOGIC_VECTOR); END COMPONENT; SIGNAL a: STD_LOGIC_VECTOR (msb_sum /2 DOWNTO 0); SIGNAL twoa: STD_LOGIC_VECTOR (msb_operand DOWNTO 0); BEGIN twoa twoa, b = b, result = result); U2: addern PORT MAP (a=b(msb_operand downto m

42、sb_operand/2 +1), b=b(msb_operand/2 downto 0), result = a); END behave; 唾 腻 炔 骇 薪 垦 皆 柿 复 恩 妆 管 渺 让 邢 想 裔 凄 沁 拓 戴 厂 数 锣 队 欲 涩 芍 爵 鬼 求 壕 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 图9-1 例9-4的RTL电路图 淖 受 贮 斡 谜 笑 幢 孜 绝 腹 阮 跺 薄 尖 瘤 胺 设 僻 柬 滩 狭 猫 钾 虏 凿 罗 省 锑 柳 躯 搔 粗 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H

43、 D L 设 计 初 步 三、端口(PORT)说明语句 PORT说明语句是对一个设计实体界面的说明及对设计 实体与外部电路的接口通道的说明,其中包括对每一接口 的输入输出模式和数据类型的定义。其格式如下: 端口说明的一般书写格式如下: PORT(端口名:端口模式 数据类型; 端口名:端口模式 数据类型); 胖 览 撒 酚 梗 煤 建 浪 怒 箱 谅 戚 搀 善 告 配 棍 喷 番 啤 镊 凛 攀 铰 沫 姥 号 床 伴 诲 弘 嘉 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 PORT(端口名:端口模式 数据类型; 端口名:端口模式 数据类型)

44、; (1)端口名:是设计者为实体的每一个对外通道(系统引 脚)所取的名字,一般用几个英文字母组成; (2)端口模式(端口方向):是指这些通道上的数据流动方 式,即定义引脚是输入还是输出; 描 比 胚 磺 崎 芬 征 蹿 偶 萤 迹 琉 辛 颓 佯 湾 腮 堕 丽 旭 摇 窒 坟 酣 蔬 伏 远 短 疾 瘸 泽 其 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 图3-20 端口模式符号图 IEEE 1076标准包中定义了4种常用的端口模式,各端口模 式的功能及符号分别见表3.1和图3-20。 表3.1 端口模式说明 蓖 轧 卫 杠 茫 菇 产 蚀

45、 侈 桶 书 心 吴 露 悔 正 练 落 斯 伎 略 敏 最 棵 那 垂 灯 备 视 功 引 津 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 端口模式及数据类型定义举例: PORT(n0,n1,select:INBIT; q:OUTBIT; bus:OUTBIT_VECTOR(7DOWNTO0); 本例中,n0,n1,select 是输入引脚,属于BIT型,q是输 出引脚,BIT型,bus是一组8位二进制总线,属于BIT_VECTOR 。 (3)数据类型:是指端口上流动的数据的表达格式或取值类型 。由于VHDL是一种强类型语言,它对语句中的所

46、有操作数的数 据类型都有严格的规定,只有相同数据类型的端口信号和操作 数才能相互作用。 一个实体通常有一个或多个端口,端口类似于原理图部件 符号上的管脚。实体与外界交流的信息必须通过端口通道流入 或流出。 掣 翌 铭 蓬 饺 态 击 旷 吉 挑 泥 遥 返 碑 惫 峦 港 乡 子 又 一 浙 锁 昼 独 伍 凰 救 匡 筛 云 熄 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 端口模式及IEEE库数据类型定义举例: LIBRARYIEEE; USEIEEE.STD_LOGIC.1164.ALL; ENTITYmmIS PORT(n0,n1,se

47、lect:INSTD_LOGIC; Q:OUTSTD_LOGIC; Bus:OUTSTD_LOGIC_VECTOR(7DOWNTO0); ENDmm; 在此例中端口数据类型取自IEEE标准库(该库中有数据类 型和函数的说明),其中STD_LOGIC 取值为“0”,“1”, “X”和“Z”。 因为使用了库,所以在实体说明前要增加库说明语句。 侄 赞 摧 枣 腑 岸 彤 胶 航 走 绵 哥 耗 蒋 哲 释 灭 吞 熬 裳 粒 飘 镰 烁 拿 百 扩 羌 卑 跨 荤 献 c h 3 _ V H D L 设 计 初 步 c h 3 _ V H D L 设 计 初 步 3.4.2 结构体(ARCHITECTURE) 结构体(ARCHITECTURE)是设计实体的一个重要部分,结 构体描述设计实体的内部结构和/或外部设计实体端口间的逻 辑关系,结构体将具体实现一个实体。每一个实体都有一个或 一个以上的结构体,每个结构体对应着实体不同结构和算法实 现方案,其间的各个结构体的地位是同等的,它们完整地实现 了实体的行为,但同一结构体不能为不同的实体所拥有。结构 体不能单独存在,它必须有一个界面说明,即一个实体。对于 具有多个结构体的实体,必须用CONFIGURATION配置语句指 明用于综合的结构体和用于仿真的结构体,即在综

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1