1 / 66

教学目标:

教学目标:. 了解基本的语法现象 掌握非完整性语句 掌握时序电路时钟电路检测方法。. 3.1 多路选择器 VHDL 描述. 3.1.1 2选1多路选择器的 VHDL 描述. 【例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 ;

Download Presentation

教学目标:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 教学目标: • 了解基本的语法现象 • 掌握非完整性语句 • 掌握时序电路时钟电路检测方法。

  2. 3.1 多路选择器VHDL描述 3.1.1 2选1多路选择器的VHDL描述 【例3-1】 ENTITYmux21aIS PORT( a, b : IN BIT ; s : IN BIT; y :OUT BIT ) ; END ENTITYmux21a ; ARCHITECTUREone OFmux21aIS BEGIN y <= aWHEN s = '0'ELSE b ; END ARCHITECTUREone ; 实体 图3-1 mux21a实体 结构体 图3-2 mux21a结构体

  3. 3.1.2 VHDL相关语句说明 2. 实体名 3. PORT语句和端口信号名 4. 端口模式 INOUT BUFFER OUT IN 5. 数据类型BIT

  4. 3.1.2 VHDL相关语句说明 6. 结构体表达 【例3-7】 ARCHITECTURE arch_name OF e_name IS (说明语句) BEGIN (功能描述语句) END ARCHITECTURE arch_name ; 或: 【例3-8】 ARCHITECTURE arch_name OF e_name IS (说明语句) BEGIN (功能描述语句) END arch_name ; 7. 信号传输(赋值)符号和数据比较符号

  5. 3.1.2 VHDL相关语句说明 8. 逻辑操作符AND、OR、NOT 9. IF_THEN条件语句 10. WHEN_ELSE条件信号赋值语句 赋值目标 <= 表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE ... 表达式 ; 11. PROCESS进程语句和顺序语句 12. 文件取名和存盘

  6. 3.1.3 VHDL设计的基本概念和语句小节 实体 结构体 端口定义 端口模式 数据类型 信号赋值符 条件比较符  延时 逻辑操作符 IF条件语句 并行条件语句 进程语句 顺序语句 并行语句 文件取名 文件存盘

  7. 3.2.2 D触发器VHDL描述的语言现象说明 1. 标准逻辑位数据类型STD_LOGIC BIT数据类型定义:TYPE BIT IS('0','1'); STD_LOGIC数据类型定义: TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-'); STD_LOGIC所定义的9种数据的含义是: ‘U’表示未初始化的; ‘X’表示强未知的; ‘0’表示强逻辑0; ‘1’表示强逻辑1; ‘Z’表示高阻态; ‘W’表示弱未知的; ‘L’表示弱逻辑0; ‘H’表示弱逻辑1; ‘-’表示忽略。

  8. 3.2.2 D触发器VHDL描述的语言现象说明 2. 设计库和标准程序包 使用库和程序包的一般定义表式是: LIBRARY <设计库名>; USE < 设计库名>.<程序包名>.ALL ; 3. SIGNAL信号定义和数据对象 【例3-10】 ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q <= D ; END IF; END PROCESS ; END ;

  9. 3.2.2 D触发器VHDL描述的语言现象说明 4. 上升沿检测表式和信号属性函数EVENT 关键词EVENT是信号属性,VHDL通过以下表式来测定某信号的跳变边沿: <信号名>'EVENT

  10. 比较用5种不同语句的D触发器VHDL程序 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 clk’last_value='0' then q1 <= d; end if; q <= q1 ; end process; end test1_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 test1_body; 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) begin if (clk = ‘1’) then q1 <= d; end if; q <= q1 ; end process; end body; 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; They are all the same DFF

  11. 3.2.2 D触发器VHDL描述的语言现象说明 5. 不完整条件语句与时序电路 【例3-11】 ENTITY COMP_BAD IS PORT( a1 : IN BIT; 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 <= '0' ;-- 未提及当a1=b1时,q1作何操作 END IF; END PROCESS ; END ;

  12. 5. 不完整条件语句与时序电路 图3-5 例3-11的电路图

  13. 5. 不完整条件语句与时序电路 【例3-12】 ENTITY COMP_GOOD IS PORT(a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_GOOD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 > b1 THEN q1 <= '1' ; ELSE q1 <= '0' ; END IF; END PROCESS ; END 图3-6 例3-12的电路图

  14. 3.2.3 实现时序电路的VHDL不同表达方式 【例3-13】 ... PROCESS (CLK) BEGIN IF CLK'EVENT AND (CLK='1') AND (CLK'LAST_VALUE='0') THEN Q <= D ; --确保CLK的变化是一次上升沿的跳变 END IF; END PROCESS ; 【例3-14】 ... PROCESS (CLK) BEGIN IF CLK='1' AND CLK'LAST_VALUE='0' --同例3-13 THEN Q <= D ; END IF; END PROCESS ;

  15. 3.2.3 实现时序电路的VHDL不同表达方式 【例3-15】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF3 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF3 IS SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS (CLK) BEGIN IF rising_edge(CLK) -- CLK的数据类型必须是STD_LOGIC THEN Q1 <= D ; END IF; Q <= Q1 ; END PROCESS ; END ;

  16. 3.2.3 实现时序电路的VHDL不同表达方式 【例3-16】 ... PROCESS BEGIN wait until CLK = '1' ; --利用wait语句 Q <= D ; END PROCESS; 【例3-17】... PROCESS (CLK) BEGIN IF CLK = '1' THEN Q <= D ; --利用进程的启动特性产生对CLK的边沿检测 END IF; END PROCESS ; 【例3-18】... PROCESS (CLK,D) BEGIN IF CLK = '1' --电平触发型寄存器 THEN Q <= D ; END IF; END PROCESS ;

  17. 3.2.3 实现时序电路的VHDL不同表达方式 图3-7 边沿型触发器时序波形 图3-8 电平触发型寄存器的时序波形

  18. 3.2.4 异步时序电路设计 【例3-19】 ... ARCHITECTURE bhv OF MULTI_DFF IS SIGNAL Q1,Q2 : STD_LOGIC; BEGIN PRO1: PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK='1' THEN Q1 <= NOT (Q2 OR A); END IF; END PROCESS ; PRO2:PROCESS (Q1) BEGIN IF Q1'EVENT AND Q1='1' THEN Q2 <= D; END IF; QQ <= Q2 ; END PROCESS ; 图3-9 例3-19综合的电路

  19. 3.2.5 VHDL设计基本概念和语言现象小节 VHDL库 程序包 数据类型 数据对象 信号属性 时钟检测 时序电路 异步时序

  20. VHDL 设计流程 :V-S-F-P Use any Text Editor to input your design VHDL Entry Use any VHDL Compiler to convert your language design to Gate level with optimization in term of Speed / Area Synthesis To map the logic to Altera Device Architecture e.g. LUT, Carry/Cascade Chain, EAB......(further logic optimization) Fitting Architecture Synthesis Configure/Programming the Altera Device and do on board debugging, prototyping or production Perogr. Down Load

  21. VHDL文本输入设计流程 STEP2:输入设计项目 原理图/VHDL文本代码 STEP3:存盘,注意 原理图/文本取名 STEP4:将设计项 目设置成Project STEP5:选 择目标器件 STEP1:建立 工作库文件夹 STEP8:仿真测 试和波形分析 STEP7:建立仿 真波形文件 STEP6: 启动编译 STEP10:编程 下载/配置 STEP9:引脚 锁定并编译 STEP11: 硬件测试

  22. 3.4 VHDL文本输入设计方法初步 为设计全加器 新建一个文 件夹作工作库 文件夹名取为 My_prjct 注意,不可 用中文!

  23. 新建一个设 计文件 使用文本输入方 法设计,必须选择 打开文本编辑器 3.4.1 编辑输入并保存VHDL源文件

  24. 图3-12 建立文本编辑器对话框 存盘文件名必须 取为:mux21a.vhd 用键盘输入设计 文件:多路选择器 注意,要存在 自己建立的 文件夹中 文本编辑窗 图3-13 在文本编辑窗中输入VHDL文件并存盘

  25. 文件存盘后, 关键词将改变 颜色!否则文 件名一定有错!

  26. 最后注意此路 径指向的改变 首先点击这里 然后选择此项, 将当前的原理图 设计文件设置成 工程 图3-14 设定当前文件为工程 3.4.2 将当前设计设定为工程

  27. 注意,此路径指 向当前的工程!

  28. 首先选择这里 器件系列选择 窗,选择ACEX1K 系列 根据实验板上的 目标器件型号选 择,如选EP1K30 注意,首先消去 这里的勾,以便 使所有速度级别 的器件都能显示 出来

  29. 选择编译器 编译窗

  30. 3.4.3 选择VHDL文本编译版本号和排错 选择此项 选择VHDL1993项 图3-13 设定VHDL编译版本号

  31. 选择此项 消去这里的勾

  32. 编译出错!

  33. 3.4.3 选择VHDL文本编译版本号和排错 打开错误提示窗 图3-16 确定设计文件中的错误

  34. 错误所在 错误所在

  35. 改正错误

  36. 完成编译!

  37. 时序仿真 首先选择此项, 为仿真测试新 建一个文件 选择波形 编辑器文件

  38. 从SNF文件中 输入设计文件 的信号节点 点击“LIST”

  39. SNF文件中 的信号节点 用此键选择左窗 中需要的信号 进入右窗 最后点击“OK”

  40. 消去这里的勾, 以便方便设置 输入电平 在Options菜单中消去网格对齐Snap to Grid的选择(消去对勾)

  41. 选择END TIME 调整仿真时间 区域。 选择63微秒 比较合适

  42. 先点击‘b’,将其 点为黑色 用此键改变仿真 区域坐标到合适 位置。 设置输入信号‘b’ 的周期为800ns 点击‘1’,使拖黑 的电平为高电平 然后先点击此处 将弹出时钟周期 设置窗

  43. 设置输入信号‘a’ 的周期为2us

  44. 仿真波形文件 存盘!

  45. 选择仿真器 运行仿真器

  46. 3.4.4 时序仿真 图3-17 mux21a仿真波形

  47. 引脚锁定 可选择输出“y” 的信号从扬 声器输出 信号a和b输入 两个不同频率 的时钟信号 选择实验电路结构图6 可选择键8作为多 路选择器的输入“s”

  48. 选择实验板上 插有的目标器件 键8的引脚名 作为“s”信号 键8的引脚名 对应的引脚号

  49. 扬声器引脚号 为:99

  50. 注意,对于GWAK30+板, 时钟引脚必须查阅以下 “时钟了解表1” 信号b由 “clock0”输入 时钟信号, 引脚号为: 126 信号a由 “clock3”输入 时钟信号, 引脚号为: 56

More Related