第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)

Slides:



Advertisements
Similar presentations
什么是SOPC: SOPC是英文System On a Programmable Chip的缩写,称为片上可编程系统。SOPC将传统的EDA技术、计算机系统、嵌入式系统、数字信号处理等融为一体,综合了各自的优势,且在结构上形成一块芯片。 为什么用SOPC:SOPC是现代电子技术和电子系统设计的发展趋势,建立了电子系统设计的新模式。用户利用SOPC开发平台,自行设计高速、高性能的DSP处理器、特定功能的CPU及其外围接口电路,创建结构最为简洁的电子系统。
Advertisements

做实验过程中发现的问题: 新建时工程文件夹建立了,但所建实体文件并没存放在其中 文件名不能用汉字
《 E D A 技 术》 课 程 教 学 讲授:伍宗富 湖南文理学院电气与信息工程学院 2017年3月19日星期日.
第4章 VHDL设计初步.
Combinational Logic 組合邏輯
第6章 VHDL设计应用实例 6.1 8位加法器的设计 6.3 序列检测器的设计 6.4 正负脉宽数控调制信号发生器的设计
电工电子实验中心.
EPF10K10TI144-4晶片燒錄.
硬件描述语言VHDL及其应用 哈工大微电子中心 王 进 祥 讲课地点:A213 电话:
第三章 组合逻辑电路 第一节 组合电路的分析和设计 第二节 组合逻辑电路中的竞争与冒险 第三节 超高速集成电路硬件描述语言VHDL
第1章 FPGA概述 1.1 FPGA的发展历程 1.2 FPGA的基本原理 1.3 FPGA的设计方法 1.4 FPGA的设计流程
TTCN-3简介.
第一章 C语言概述.
VHDL數位電路實習與專題設計 文魁資訊-UE301
課程名稱:程式設計 授課老師:________
VHDL數位電路實習與專題設計 文魁資訊-UE301
Chapter 5 Verilog 硬體描述語言
8.9二进制振幅键控(ASK) 调制器与解调器设计
Chapter 5 Verilog硬體描述語言
邏輯設計.
Ch01-2 Verilog語法 資料流(DataFlow)設計 行為(Behavior)設計
VHDL 硬體描述語言 數位電路設計實務 第四章 VHDL 的語言結構.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
VHDL 硬體描述語言 數位電路設計實務 第六章 函數副程序以及套件程式庫.
第10章 VHDL入门 2018/11/27 逻辑设计基础.
EDA原理及应用 何宾
使用VHDL設計—4位元減法器 通訊一甲 B 楊穎穆.
EDA原理及应用 何宾
第九章 数字系统设计 数字系统设计概述 ASM图、MDS图以及 ASM图至MDS图的转换 数字密码引爆器系统设计 数字系统设计实例 小结.
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
義守大學電機工程學系 陳慶瀚 第2章 VHDL基本語法 義守大學電機工程學系 陳慶瀚
第13章 数字电路基础 13.1 数字电路概述 13.2 数字电路中的数值与码制 13.3 逻辑代数 13.4 逻辑门电路
使用VHDL設計—向上&向下計數器 通訊一甲 B 楊穎穆.
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
Danny Mok Altera HK FAE AHDL培训教材 Danny Mok Altera HK FAE 2018/12/9 P.1.
第2章 Quartus II设计向导 2.1 频率计的VHDL设计 2.2 使用宏功能块设计频率计 2.3 嵌入式系统块ESB的应用
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
變數命名 保留字(Reserved Word)
使用VHDL設計--Moore Machine
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
邏輯設計 Logic Design 顧叔財, Room 9703, (037)381864,
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
第12章 图像边缘检测器的设计与分析 12.1 系统设计要求 12.2 系统设计方案 12.3 主要LPM原理图和VHDL源程序
精简指令集(RISC)CPU的构造原理和设计方法
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
第五章 VHDL设计基础 本章重点: 本章难点: VHDL程序结构 VHDL的基本数据类型 VHDL的基本描述语句 基本组合逻辑电路设计
義守大學電機工程學系 陳慶瀚 第3章 VHDL Concurrent語法 義守大學電機工程學系 陳慶瀚
第六章 VHDL设计共享.
第五章 VHDL主要描述语句.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
使用VHDL設計—4位元ALU電路 通訊一甲 B 楊穎穆.
抢答器 设计一个2人抢答器。要求如下: 设计任务 1.两人抢答,先抢为有效,用发光二极 管显示是否抢到优先答题权。
小结 郭清溥.
软件工程 第四章 软件设计 软件过程设计技术与工具.
计算机学院 数字逻辑实验的要求.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
设计示例一 用门级结构描述D触发器:.
數位邏輯設計 VHDL.
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
使用VHDL設計-8x1多工器 通訊一甲 B 楊穎穆.
第7章 VHDL设计应用实例 7.1 8位加法器的设计 7.2 分频电路 7.3 数字秒表的设计.
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2009年10月22日
Programmable Logic System Design
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
Progress Report Yuan-Hsin Liao 10/22/2014.
第6章 PHP基本語法介紹.
第七章 基本逻辑电路设计.
Programmable Logic System Design
Presentation transcript:

第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154) 周四下(通信250~282,电信001~043) 周五晚(电信044~125) 第七周 周一下(电信125~216) 周二上(电信217~302) 周二下(电信302~385)

VHDL硬件描述语言基础 简介 基本结构 基本数据类型 设计组合电路 设计时序电路 设计状态机 大规模电路的层次化设计 Function and Procedure

简介--背景 传统数字电路设计方法不适合设计大规模的系统。工程师不容易理解原理图设计的功能。 众多软件公司开发研制了具有自己特色的电路硬件描述语言(Hardware Description Language,HDL),存在着很大的差异,工程师一旦选用某种硬件描述语言作为输入工具,就被束缚在这个硬件设计环境之中。因此,硬件设计工程师需要一种强大的、标准化的硬件描述语言,作为可相互交流的设计环境。

简介--背景 美国国防部在80年代初提出了VHSIC(Very High Speed Integrated Circuit)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。1981年提出了一种新的HDL,称之为VHSIC Hardware Description Language,简称为VHDL,这种语言的成就有两个方面: 描述复杂的数字电路系统 成为国际的硬件描述语言标准

VHDL的优点 用于设计复杂的、多层次的设计。支持设计库和设计的重复使用 与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节。 有丰富的软件支持VHDL的综合和仿真,从而能在设计阶段就能发现设计中的Bug,缩短设计时间,降低成本。 更方便地向ASIC过渡 VHDL有良好的可读性,容易理解。

VHDL与计算机语言的区别 运行的基础 执行方式 验证方式 计算机语言是在CPU+RAM构建的平台上运行 计算机语言基本上以串行的方式执行 VHDL在总体上是以并行方式工作 验证方式 计算机语言主要关注于变量值的变化 VHDL要实现严格的时序逻辑关系

VHDL 大小写不敏感 eqcomp4.vhd 库 包 实体 构造体 文件名和实体名一致 Library IEEE; --eqcomp4 is a four bit equality comparator Library IEEE; use IEEE.std_logic_1164.all; entity eqcomp4 is port(a, b:in std_logic_vector(3 downto 0); equal :out std_logic); end eqcomp4; architecture dataflow of eqcomp4 is begin equal <= ‘1’ when a=b else ‘0’; End dataflow; 库 包 实体 每行;结尾 关键字end后跟实体名 构造体 关键字begin 关键字end后跟构造体名

实体(Entity) 描述此设计功能输入输出端口(Port) 在层次化设计时,Port为模块之间的接口 在芯片级,则代表具体芯片的管脚 Entity eqcomp4 is port(a, b: in std_logic_vector(3 downto 0); equal:out std_logic ); end eqcomp4; A[3..0] equal B[3..0]

实体--端口的模式 输入(Input) 输出(Output) 双向(Inout):可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口 缓冲(Buffer):与Output类似,但允许该管脚名作为一些逻辑的输入信号

Out与Buffer的区别 Entity test1 is port(a: in std_logic; b,c: out std_logic ); end test1; architecture a of test1 is begin b <= not(a); c <= b;--Error end a; Entity test2 is port(a: in std_logic; b : buffer std_logic; c: out std_logic ); end test2; architecture a of test2 is begin b <= not(a); c <= b; end a;

结构体(Architecture) 描述实体的行为 结构体有三种描述方式 行为描述(behavioral) 数据流描述(dataflow) 结构化描述(structural)

结构体--行为描述 Architecture behavioral of eqcomp4 is begin comp: process (a,b) if a=b then equal <= ‘1’; else equal <=‘0’; end if; end process comp; end behavioral ; 高层次的功能描述,不必考虑在电路中到底是怎样实现的。

结构体--数据流描述 描述输入信号经过怎样的变换得到输出信号 Architecture dataflow1 of eqcomp4 is begin equal <= ‘1’ when a=b else ‘0’; end dataflow1; Architecture dataflow2 of eqcomp4 is begin equal <= not(a(0) xor b(0)) and not(a(1) xor b(1)) and not(a(2) xor b(2)) and not(a(3) xor b(3)); end dataflow2; 当a和b的宽度发生变化时,需要修改设计,当宽度过大时,设计非常繁琐

结构体--结构化描述 architecture struct of eqcomp4 is begin U0:xnor2 port map(a(0),b(0),x(0)); U1:xnor2 port map(a(1),b(1),x(1)); U2:xnor2 port map(a(2),b(2),x(2)); U3:xnor2 port map(a(3),b(3),x(3)); U4:and4 port map(x(0),x(1),x(2),x(3),equal); end struct; 类似于电路的网络表,将各个器件通过语言的形式进行连接,与电路有一一对应的关系。 一般用于大规模电路的层次化设计时。

三种描述方式的比较 描述方式 优点 缺点 适用场合 结构化描述 连接关系清晰,电路模块化清晰 电路不易理解、繁琐、复杂 电路层次化设计 数据流描述 布尔函数定义明白 不易描述复杂电路,修改不易 小门数设计 行为描述 电路特性清楚明了 进行综合效率相对较低 大型复杂的电路模块设计

VHDL标识符(Identifiers) 基本标识符由字母、数字和下划线组成 第一个字符必须是字母 最后一个字符不能是下划线 不允许连续2个下划线 保留字(关键字)不能用于标识符 大小写是等效的

VHDL数据对象(Data Objects) 常数(Constant) 固定值,不能在程序中被改变 增强程序的可读性,便于修改程序 在综合后,连接到电源和地 可在Library、Entity、Architecture、Process中进行定义,其有效范围也相应限定 Constant data_bus_width: integer := 8;

VHDL数据对象(Data Objects) 信号(Signals) 代表连线,Port也是一种信号 没有方向性,可给它赋值,也可当作输入 在Entity中和Architecture中定义 设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。在Max+PlusII中被忽略。 用 <= 进行赋值 signal count:bit_vector(3 downto 0):=“0011”;

VHDL数据对象(Data Objects) 变量(Variable) 临时数据,没有物理意义 只能在Process和Function中定义,并只在其内部有效 要使其全局有效,先转换为Signal。 用 := 进行赋值 variable result : std_logic := ‘0’;

信号与变量的区别 architecture rtl of start is signal count : integer range 0 to 7; begin process(clk) if (clk'event and clk='1') then count <= count + 1; if(count=0) then carryout <= '1'; else carryout <= '0'; end if; end process; end rtl; architecture rtl of start is begin process(clk) variable count : integer range 0 to 7; if (clk'event and clk='1') then count := count + 1; if(count=0) then carryout <= '1'; else carryout <= '0'; end if; end process; end rtl;

信号与变量的区别 architecture a of start is signal tmp : std_logic; begin process(a_bus) tmp <= '1'; for i in 3 downto 0 loop tmp <= a_bus(i) and tmp; end loop; carryout <= tmp; end process; end a; architecture a of start is begin process(a_bus) variable tmp:std_logic; tmp := '1'; for i in 3 downto 0 loop tmp := a_bus(i) and tmp; end loop; carryout <= tmp; end process; end a;

VHDL数据类型 标量类型(Scalar) 复合类型(Composite) 枚举(Enumeration) 整数(Integer) 浮点数(Float) 物理(Physical) 复合类型(Composite)

VHDL数据类型--枚举 列举数据对象可能存在的值,一般用于定义状态机的状态 IEEE1076标准中预定义了两个枚举类型 Type states is (idle, start, running, pause, stop) Signal current_state : states; IEEE1076标准中预定义了两个枚举类型 Type boolean is (False, True) Type bit is (‘0’, ‘1’) Signal a : bit;

VHDL数据类型--枚举 IEEE1164标准中预定义了一个枚举类型Type std_logic is(‘U’, ‘X’,‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’); 该类型能比较全面地包括数字电路中信号会出现的几种状态,因此一般情况把这种类型代替bit Signal a : std_logic; 注意:这里的大小写是敏感的

VHDL数据类型 整数、浮点数 物理类型 方便用于数值方面的运算:加减乘除 整数范围:-231 ~231 –1,经常用于计数器 实数范围:-1.0E38~+1.0E38,不被 Max+PLusII支持 Variable a : integer range –255 to +255; 物理类型 主要用于调试

VHDL数据类型--复合类型 Array Types 多个相同类型成员组成的队列,一般用于定义数据总线、地址总线等。 Signal a: std_logic_vector(7 downto 0); a <= B“00111010”; a <= X “3A”; 可自定义复合类型 Type word is array (15 downto 0) of bit; Signal b : word; Type table8x4 is array (0 to 7, 0 to 3) of bit;

VHDL数据类型--复合类型 Record Types 相同或不同类型的元素组成,类似C中的结构 具有模型抽象能力,用于描述一个功能模块 Type iocell is record Enable :bit; DataBus :bit_vector(7 downto 0); end record; singal bus : iocell; bus.Enable <= ‘1’; bus.DataBus <= “00110110”;

VHDL数据类型及子类型 Types And Subtypes type byte_size is integer range 0 to 255; signal a : byte_size; signal b : integer range 0 to 255; if a=b then …… 采用以下方式 subtype byte_size is integer range 0 to 255;

属性(Attributes) 提供Entity、Architecture、Type和Signals的信息。 有许多预定义的值、信号和范围的属性 一个最常用的属性是’event if clk’event and clk=‘1’ then ’left,’right, ’high, ’low,’length type count is integer range 0 to 127 count’left = 0; count’right = 127; count’high = 127; count’low = 0; count’length = 128;

VHDL运算符 逻辑运算符 关系运算符 算术运算符 并置(连接)运算符 AND、OR、NAND、NOR、XOR、NOT =、/=、<、>、<=、>= 算术运算符 +、-、*、/ 并置(连接)运算符 &

组合电路--并行语句(Concurrent) 并行语句位于Process外面,同时执行,不分位置的先后顺序 并行语句包括: 布尔等式: <= With-select-when When-else 布尔等式 A <= s(0) and s(1); B <= not(y);

组合电路--并行语句 With-select-when语句 With Sel_signal select Signal_name <= a when Sel_signal_1, b when Sel_signal_2, c when Sel_signal_3,… x when Sel_signal_x; Signal s : std_logic_vector(1 downto 0); Signal a,b,c,d,x : std_logic; With s select x <= a when “00”, b when “01”, c when “10”, d when others;

组合电路--并行语句 When-else语句 Signal_name <= a when condition1 else b when condition2 else c when condition3 else … x ; Signal a,b,c,d:std_logic; Signal w,x,y,z:std_logic; x <= w when a=‘1’ else x when b=‘1’ else y when c=‘1’ else z when d=‘1’ else ‘0’; x <= a when s=“00” else b when s=“01” else c when s=“10” else d;

组合电路--并行语句 实现优先级编码器 encode <= “111” when D(7) = ‘1’ else “000”;

组合电路--并行语句 When-else语句条件语句可以是一个简单的表达式 With-select-when则不能采用表达式作为条件 a <= “0000” when state=idle and state=‘1’ else “0001” when state=idle and state=‘0’ else b when state=running and state=‘1’ else a;

组合电路--顺序语句(Sequential) Process,Function,Procedure中的语句都是顺序执行,以Process为例 Process与Process之间,与其他并行语句之间都是并行的关系 If-then-else Case-when

组合电路--顺序语句 If-then-else If(condition1) then do something; elsif(condition2) then … else do something different; end if;

组合电路--顺序语句 Process(addr) Begin step <= ‘0’; if(addr = X “F”) then end if; End process; Process(addr) Begin if(addr = X “F”) then step <= ‘1’; else step <= ‘0’; end if; End process; Process(addr) Begin if(addr = X “F”) then step <= ‘1’; end if; End process; Step <= addr(3) * addr(2) * Addr(1) * addr(0) + step

组合电路--顺序语句 用于作地址译码 InRam <= ‘0’; Periph1 <= ‘0’; Periph2 <= ‘0’; OutRam<= ‘0’; EEPRom <= ‘1’; If addr >= X “0000” and addr <X “4000” then InRam <= ‘1’; elsif addr >= X “4000” and addr <X “4008” then Periph1 <= ‘1’; elsif addr >= X “4008” and addr <X “4010” then Periph2 <= ‘1’; elsif addr >= X “8000” and addr <X “C000” then OutRam <= ‘1’; elsif addr >= X “C000” then EEPRom <= ‘1’; end if;

组合电路--顺序语句 Case-when case sel_signal is when value_1 => (do sth) … when value_last => end case;

组合电路--顺序语句 实现数码管译码器 Process(address) begin case address is when “0000” => decode <= X “3F” when “0001” => decode <= X “60” when “0010” => decode <= X “B5” when “0011” => decode <= X “F4” …… when others => decode <= X “00”; end case; end process;

几种语句的比较 语句 With-select-when When-else If-else Case-when 选择条件 一个信号的不同值,互斥 多个信号多种组合,不必互斥 语句属性 并行 顺序 用途 编码、译码、多路选择器 优先编码器,地址译码器 状态机

同步时序逻辑电路 Process(clk) begin if(clk’event and clk=‘1’) then q <= d; end if; end process; Process(clk) begin if(clk=‘1’) then q <= d; end if; end process; D触发器 缓冲器

实现T触发器 Process(clk) begin if(clk’event and clk=‘1’) then if(t = ‘1’) then q <= not(q); else q <= q; end if; end process;