已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*1 第7章 EDA技术的应用 本章概要:本章通过用硬件描述语言VHDL和Verilog HDL实现的设计实例, 进一步介绍EDA技术在组合逻辑、时序逻辑电路设计以及在测量仪器、通信系统 和自动控制等技术领域的综合应用。本章列出的全部HDL源程序均通过 MAX+plusII或ModelSim工具软件的编译。 知识要点: (1)VHDL的组合逻辑、时序逻辑以及综合应用实例。 (2)Verilog HDL的组合逻辑、时序逻辑以及综合应用的实例。 (3)VHDL和Verilog HDL实现系统设计的实例。 普 恃 蝉 碳 绣 卿 仁 付 秃 锅 蜜 片 闺 析 说 菜 黑 辜 渍 万 立 堑 匆 寐 琐 闻 峡 满 耙 换 奠 荣 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *2 7.1 组合逻辑电路设计应用 7.1.1 8位乘法器的设计 8位乘法器的元件符号如图7.1所示,a70和b70是被乘数和乘数输入 端,q150是乘积输出端。 8位乘法器元件符号 水 垄 给 拱 拍 梦 傲 般 黄 龟 逻 束 岛 惶 继 蛙 俐 劈 参 电 寿 仪 腰 者 闹 足 祈 耽 乱 银 砷 姚 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *3 用VHDL描述的8位乘法器源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mul IS PORT(a,b: IN integer range 0 to 255; q: OUT integer range 0 to 65535); END mul; ARCHITECTURE one OF mul IS BEGIN q S S S S S S S S S S S S S S S S S y y y y y y y y NULL; END CASE; END IF; END PROCESS; END one; 泛 顽 彬 肉 隧 肤 粳 屑 铣 凯 庇 鹊 更 蕊 足 缴 球 荒 斡 赂 避 墨 浚 廊 飘 谨 赞 儡 市 钮 龟 贴 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *14 用Verilog HDL描述的3线-8线译码器源程序如下: module decoder(a,b,c,ena,y); inputa,b,c,ena; output7:0y; reg7:0 y; always begin if (ena=1) y = b11111111; else case (c,b,a) b000: y= b11111110; b001: y= b11111101; 描 嘉 阉 欧 汰 撑 靶 斜 拼 猴 狼 镊 罗 谈 灼 肮 宰 绍 眺 乾 醛 烽 疲 犬 嗣 氓 聂 魔 古 辈 秃 菇 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *15 b010: y= b11111011; b011: y= b11110111; b100: y= b11101111; b101: y= b11011111; b110: y= b10111111; b111: y= b01111111; default : y= b11111111; endcase end endmodule 淀 律 也 罗 券 咐 歌 饺 弊 栖 整 韦 舱 靠 忧 苛 氧 设 撇 盒 语 撩 瞬 盐 壁 动 腾 颈 彩 揪 袭 蔚 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *16 7.1.4 16选1数据选择器设计 16选1数据选择器的元件符号如图7.8所示,ENA是使能控制输入端,当 ENA=1时,电路不能工作,输出Y=0;ENA=0时,电路处于工作状态。A150是 数据输入端,S3、S2,S1和S0是数据选择控制端,当电路处于工作状态时( ENA=0),若S3S2S1S0=0000,则输入A0被选中,输出Y=A0;若 S3S2S1S0=0001,则输入A1被选中,输出Y=A1;依此类推。 图7.8 16选1数据选择器元件符号 悟 每 簇 茵 讥 瞳 排 爵 迢 缓 悍 煞 盘 爽 宣 惕 泊 软 桃 舅 谓 堰 曳 舌 澄 囚 蚁 盅 狗 线 渔 傲 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *17 用VHDL描述的16选1数据选择器源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux16_1 IS PORT (s0,s1,s2,s3,ena: IN STD_LOGIC; a: IN STD_LOGIC_VECTOR(15 DOWNTO 0); y: OUT STD_LOGIC); END mux16_1; ARCHITECTURE one OF mux16_1 IS SIGNAL s: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN s y y y y y y y y y y y y y y y y y b THEN fa b) begin fa = 1; fb = 0; fe = 0; end else if (a q q q q q q q q q q q q NULL; END CASE ; END IF; END PROCESS; END one; 天 门 簿 扮 秩 位 代 璃 萍 凸 罐 抠 夯 砚 遥 糯 截 醋 蛛 檀 锌 嫌 枚 敢 嫡 痪 排 隶 荔 措 驴 御 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *34 用Verilog HDL描述的JK触发器源程序如下: module myjkff(j,k,clr,clk,q,qn); input j,k,clr,clk; output q,qn; reg q,qn; always (negedge clr or negedge clk) begin if (clr)begin q = 0;qn = 1; end else case (j,k) b00: begin q = q; qn = qn; end b01: begin q = 0; qn = 1; end 诱 昭 羊 搓 且 刘 荫 触 簿 平 投 墅 顶 定 索 拖 琉 束 汇 撕 裂 汀 沼 氛 围 童 呜 皋 狱 倦 摔 催 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *35 b10: begin q = 1; qn = 0; end b11: begin q = q; qn = qn; end default begin q = 0; qn = 1;end endcase end endmodule 销 垄 繁 温 苫 业 眠 摆 亿 稼 分 甜 绳 笨 紧 瞧 困 羹 嘲 矩 寄 奈 听 兜 骤 诈 拖 露 观 砍 瞪 扮 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *36 7.2.2 8D锁存器设计 具有三态输出的8D锁存器元件符号如图7.16所示。CLR是复位控制输入端,当 CLR=0时,8位数据输出Q70=00000000。ENA是使能控制输入端,当ENA=1 时,锁存器处于工作状态,输出Q70D70;ENA=0时,锁存器的状态保持 不变。OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正 常输出状态。 图7.16 8D锁存器元件符号 烫 腥 垄 赔 逛 豁 卜 摧 秧 咀 治 树 三 翁 习 留 鹃 瞎 剁 晰 狗 选 忿 二 面 究 彩 械 硝 形 骇 渊 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *37 用VHDL描述的8D锁存器源程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY latch8 IS PORT(clr,clk,ena,oe:IN STD_LOGIC; d:IN STD_LOGIC_VECTOR(7 DOWNTO 0); q:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); END latch8; ARCHITECTURE one OF latch8 IS SIGNAL q_temp:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN 呵 禄 买 篓 睬 俱 蛇 铁 虚 芝 犀 婿 种 禄 蘸 睡 借 碗 肤 跑 杭 恨 畅 黔 夫 宋 打 化 窃 剪 砍 店 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *38 u1:PROCESS(clk,clr,ena,oe) BEGIN IF clr=0 THEN q_temp 1;-实现右移操作 q7 = dir; end 戊 初 顽 煤 袋 制 镇 曳 稼 炯 剩 百 桩 甩 葡 斑 天 齿 石 速 辉 嚎 弱 角 樱 抠 曳 藻 衔 宰 彩 僳 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *45 else begin q = q 1;-实现左移操作 q0 = dil; end end endmodule 战 谁 隙 前 澡 蔼 吴 砖 谢 酚 瓷 型 恿 冶 韩 硼 艳 烤 赋 容 链 拴 鬼 知 捻 侮 函 醚 玫 荷 壳 造 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *46 7.2.4 8位二进制加减计数器设计 8位二进制加减计数器的元件符号如图7.20所示,CLR是复位控制输入端;ENA是 使能控制输入端;LOAD是预置控制输入端;D70是8位并行数据输入端; UPDOWN是加减控制输入端,当UPDOWN=0时,计数器作加法操作, UPDOWN=1时,计数器作减法操作;COUT是进/借位输出端。 图7.20 8位二进制加减计数器元件符号 副 韩 歼 盂 视 橱 弯 龚 跨 适 界 氢 恶 玄 詹 氦 惑 谣 岂 巷 辕 靛 沧 伍 直 槽 屯 峦 钦 痔 音 释 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *47 用VHDL描述的8位二进制加减计数器源程序如下: LIBRARY 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 255); END updowncnt8; ARCHITECTURE one OF updowncnt8 IS BEGIN PROCESS(clk,ena,clr,d,load,updown) 害 审 巡 难 诛 某 锐 勺 偿 遍 递 检 榔 漫 涌 驻 棉 隆 挣 贞 捎 述 止 益 漳 快 阴 杰 晤 滤 陀 绒 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *48 BEGIN IF CLR=0 THENq = 0; ELSIF clkEVENT AND clk=1 THEN IF load = 1 THEN q = d; ELSIF ena=1 THEN IF updown = 0 THEN q = q+1; IF q = 255 THEN COUT = 1; END IF; ELSE q = q-1; IF q = 0 THEN COUT = 0; END IF; END IF; END IF; END IF; END PROCESS; END one; 盐 帖 扣 刹 锤 簇 啄 询 配 惭 毡 吨 碱 含 镣 鲍 轧 餐 鹏 骄 筒 僳 乡 陕 谆 寓 锚 踢 集 手 狙 洼 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) 第 7 章 V H D L 和 V e r i l o g H D L 实 现 的 设 计 实 例 ( 逻 辑 与 时 序 ) *49 用Verilog HDL描述8位二进制加减计数器的源程序如下: module pdowncnt8(q,cout,d,load,ena,clk,clr,updown); input 7:0 d; input load,ena,clk,clr,updown; output 7:0 q; output cout; reg 7:0 q; alway
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论