第6章VHDL程序设计 EDA技术与应用>课程讲义 肥工业大学彭良清 上一章 下一章
第6章 VHDL程序设计 课程讲义 合肥工业大学 彭良清 上一章 下一章
上一章内容回顾 1.先看一个HDL代码的例子 2.简单代码结构:端口定义和电路逻辑表达 3.代码文件命名 4.进程( PROCESS) 5.VHDL代码中的:Port, Siganl, Variable 6.学会简单VHDL设计的三板斧 7.VHDL与C代码中的函数的区别? 8.操作符&数据类型&赋值语句 9.逻辑分支语句:F;CASE 10.循环语句(LOOP) 11.VHDL代码中的时序逻辑和组合逻辑表达 12.语句的执行时间问题 (顺序语句&并行语句) 13.基本单元电路的ⅥHDL代码 三态门,双向缓冲器,计数器,D触发器,译码器
上一章内容 回顾 1. 先看一个VHDL代码的例子 2. 简单代码结构:端口定义和电路逻辑表达 3. 代码文件命名 4. 进程(PROCESS) 5. VHDL代码中的:Port,Siganl,Variable 6. 学会简单VHDL设计的三板斧 7. VHDL与C 代码中的函数 的区别 ? 8. 操作符 & 数据类型 & 赋值语句 9. 逻辑分支语句:IF;CASE, 10. 循环语句(LOOP) 11. VHDL代码中的时序逻辑和组合逻辑表达 12. 语句的执行时间问题 (顺序语句 & 并行语句) 13. 基本单元电路的VHDL代码 (三态门,双向缓冲器,计数器,D触发器,译码器……)
本章内容 14.复杂代码设计要领 15.层次化设计与元件语句( component) 16.代码复制( generate定义语句) 17.复杂电路的代码结构 ( function、 procedure、 block、 package) 18.库的使用
本章内容 14. 复杂代码设计要领 15. 层次化设计与元件语句(component ) 16. 代码复制(generate定义语句) 17. 复杂电路的代码结构 (function、procedure、block、package) 18. 库的使用
复杂代码圾计要领 1.合理划分模块 2.使用层次化结构来编码 3.使用同步电路设计 4.对基本元路的ⅥHDL代码应熟练掌握 5.使用FSM(有限状态机)来设计电路 6.使用全局的钟&全局复位信号(如果需 要时钟的话)
复杂代码 设计要领 1. 合理划分 模块 2. 使用 层次化 结构来 编码 3. 使用 同步电路 设计 4. 对 基本单元电路 的VHDL代码应熟练掌握 5. 使用 FSM (有限状态机)来设计电路 6. 使用 全局时钟 & 全局复位 信号(如果需 要时钟的话)
层次化设计与元件语句( component UIA U2A SN74ALSO5A SN74ALSo8 U1A U2A INI X OUTI SN74ALSO5A I SN74ALS08 IN2
层次化设计与元件语句(component )
U1A&U2A的源代码 ENTTY demo1 01/s 1. ENTTY demo1 02/s PORT( A IN STD LOGIC;2 PORT( X: IN STD LOGIC; 234 B QUT 爪 N STD LOGIO; STD LOGIC 345 Z. OUT STD LOGIC 5. END ENTTY demo1 01 6. END ENTITY demo1 02 6. ARCHITECTURE bhv OF demo1_01/S 7. ARCHITECTURE bhv OF demo1 02/S Z. BEGIN 8. BEGIN not A, 9 <= XAND Y 10. 10. END ARCHITECTURE bh 11. END ARCHITECTURE bhv 详细参见: 详细参见: hfut04 component demo1 01 hfut04 component demo1 02
U1A & U2A的源代码 1. ENTITY demo1_01 IS 2. PORT ( A :IN STD_LOGIC; 3. B :OUT STD_LOGIC 4. ); 5. END ENTITY demo1_01; 6. ARCHITECTURE bhv OF demo1_01 IS 7. BEGIN 8. B <= not A; 9. 10. END ARCHITECTURE bhv; 1. ENTITY demo1_02 IS 2. PORT ( X : IN STD_LOGIC; 3. Y : IN STD_LOGIC; 4. Z : OUT STD_LOGIC 5. ); 6. END ENTITY demo1_02; 7. ARCHITECTURE bhv OF demo1_02 IS 8. BEGIN 9. Z <= X AND Y; 10. 11. END ARCHITECTURE bhv; 详细参见: hfut04_component_demo1_02 详细参见: hfut04_component_demo1_01
U1A+U2A的源代码 1. ENTITY demo IS PORT(INT N STD LOGIC 2345 IN2 STD LOGIC OUT1 OUT STD LOGIC 6. END ENTITY demo 1 7. ARCHITECTURE bhy of demo1 IS COM PONENTdemo1 01IS inverter component PORT( A N STD LOGIC. OUT STD LOGIC ); 12 ENd COMPONENT demo1 01 COMPONENTdemo1 02IS two and gate component PORT( X STD LOGIC STD LOGIC 16 OUT STD LOGIC 详细参见: END COMPONENT demo 1 02 hfuto4 component demo1 SIGNAL sig/N3 STD LOGIC. 21. BEGIN U1: demo1 01 PORTMAP(A=> N1 B=> sigIN3 ) U2: demo1 02 PORTMAP(X=> sigN3, Y=> IN2, Z=>OUT1); 24END ARCHITECTURE bhy
1. ENTITY demo1 IS 2. PORT ( IN1 : IN STD_LOGIC; 3. IN2 : IN STD_LOGIC; 4. OUT1 : OUT STD_LOGIC 5. ); 6. END ENTITY demo1; 7. ARCHITECTURE bhv OF demo1 IS 8. COMPONENTdemo1_01 IS -- inverter component 9. PORT ( A : IN STD_LOGIC; 10. B : OUT STD_LOGIC 11. ); 12. END COMPONENT demo1_01; 13. COMPONENTdemo1_02 IS -- two and gate component 14. PORT ( X : IN STD_LOGIC; 15. Y : IN STD_LOGIC; 16. Z : OUT STD_LOGIC 17. ); 18. END COMPONENT demo1_02; 19. SIGNAL sigIN3 : STD_LOGIC; 20. 21. BEGIN 22. U1: demo1_01 PORT MAP( A => IN1, B => sigIN3 ); 23. U2: demo1_02 PORT MAP( X => sigIN3, Y => IN2, Z =>OUT1 ); 24. END ARCHITECTURE bhv; U1A+U2A的源代码 详细参见: hfut04_component_demo1
元件例化( component instance) SIGNAL sigIN3: STD LOGIC. U1: demo1 01 PORT MAP(A = IN1, B=> sig/N3 ) U2: demo1 02 PORT MAP(X=> sig/N3, Y=>MN2,2=>oU71) U1A sig/N3 U2A 匚INI H OUT1> I SN4ALSOSA T I SN74ALS08 「IN2
元件例化(component instance) sigIN3 SIGNAL sigIN3 : STD_LOGIC; U1: demo1_01 PORT MAP( A => IN1, B => sigIN3 ); U2: demo1_02 PORT MAP( X => sigIN3, Y => IN2, Z =>OUT1 );
这就是一个层次化设计的例子 demo 1. vhd demo1 01. vhd demo1 02. vhd
这就是一个 层次化设计 的例子 demo1_01.vhd demo1.vhd demo1_02.vhd
元件例化:语法 1.元件定义语句 COMPONENT元件名S 取一个元件 PROT(端口名表); END COMPONENT元件名; 3.元件连接信号申明语句 (制作PCB的布线 S/GNAL信号名:类型; 2.元件例化语句 领CEB的对应座 例化名:元件名 PORT MAP(端口名=>]连接端口名
元件例化:语法 1. 元件定义语句 COMPONENT 元件名 IS PROT ( 端口名表 ); END COMPONENT 元件名; 3. 元件连接信号申明语句 SIGNAL 信号名:类型; 2. 元件例化语句 例化名:元件名 PORT MAP( [端口名=>] 连接端口名……); 取一个元件 插在PCB的对应插座上 制作PCB的布线