第八章编合$ lathe) ●综合:将较高层次的抽象描述转换到较低级别抽象描述的一种方法,即将设计 的VHDL描述转化为底居电路表示。 步骤:分析VHDL程序、检测语法错误→将设计描述转化为数据结构 将设计行为描述转化为寄存器传输级(RTL描述 81综合概述 工艺库 RTL描述 综合器 门级网表 属性 约束条件 综合过程示意图 RTL: register transmission level寄存器传输级 811RTL级描述 是以规定设计中采用各种寄存器形式为主要特征,然后在寄存器之间插入一些 必要的组合逻辑电路
第八章 综合(Synthesis) ⚫综合:将较高层次的抽象描述转换到较低级别抽象描述的一种方法,即将设计 的VHDL描述转化为底层电路表示。 8.1 综合概述 步骤:分析VHDL程序、检测语法错误→ 将设计描述转化为数据结构 → 将设计行为描述转化为寄存器传输级(RTL)描述 工艺库 RTL描述 属性 约束条件 综合器 门级网表 综合过程示意图 RTL:register transmission level 寄存器传输级 8.1.1 RTL级描述 是以规定设计中采用各种寄存器形式为主要特征,然后在寄存器之间插入一些 必要的组合逻辑电路
寄存器 寄存器 输入 输出 组合逻辑电路 CLK CLK 时钟 RTL级描述的基本逻辑图 例:用元件例化语句表示R工级描述(数据延时电路) dff dff2 Q CLK CLK OB OB clk 多路选择器 数据延时电路的逻辑电路图
寄存器 寄存器 CLK CLK 组合逻辑电路 输入 输出 时钟 RTL级描述的基本逻辑图 例:用元件例化语句表示RTL级描述(数据延时电路) 多路选择器 dff1 dff2 D Q D Q QB QB CLK CLK clk din enable dout 数据延时电路的逻辑电路图
library ieee; use ieee std_logic_1164. all entity data delay is port(dinin std logic, clk:in std _ logic; enable in std _ logic; dout: out std logic) end data delay architecture one of data_delay is component dff port(d: in std_logic; clk: in std_logic; g: out std_logic); end component; signal g-_tmpl, g-_tmp2: std logic; begin dff1: dff port map(din,clk, g-_tmp1); dff2: dff port map(a_tmpl, clk, _tmp2); dout<=q_tmp1 when enable else 4-tmp2 end one
library ieee; use ieee.std_logic_1164.all; entity data_delay is port(din:in std_logic; clk:in std_logic; enable:in std_logic; dout:out std_logic); end data_delay; architecture one of data_delay is component dff port(d: in std_logic; clk: in std_logic; q: out std_logic); end component; signal q_tmp1, q_tmp2: std_logic; begin dff1: dff port map(din,clk, q_tmp1); dff2: dff port map(q_tmp1, clk, q_tmp2); dout<=q_tmp1 when enable=‘1’ else q_tmp2; end one;
采用寄存器的推论方式表示RT级描述 library ieee; use ieee std _ logic_1164.all entity data_delay port(din in std logic; elkin std_logic; enable: in std _ logic; dout: out std_logic); end data delay architecture one of datadelay is signalql, q 2: std_logic, begin reg -p process egin waituntil clk’ event and clk=‘1 q1<=din; q2<=q1; end process reg-p; dout<=q1 when enable=1 else g2; end one
采用寄存器的推论方式表示RTL级描述 library ieee; use ieee.std_logic_1164.all; entity data_delay is port(din:in std_logic; clk:in std_logic; enable:in std_logic; dout:out std_logic); end data_delay; architecture one of data_delay is signal q1, q2: std_logic; begin reg_p:process begin wait until clk’event and clk=‘1’; q1<=din; q2<=q1; end process reg_p; dout<=q1 when enable=‘1’ else q2; end one;
Sinulation Taveforas Simulation mode: Functional R Master Time Bar 199 4 Pointer 10174ns nterval 8184n Start End A Nane Value at p ps 20.0 ns 40.0 ns 60. ns 80. 9 ns 100.0 ns 120.0 ns 140.0 ns 160.0 ns 180.0 ns 200.0 ns 220.o ns 240.0 ns 260.0 →4 94
812约束 约束的目的:有效的控制优化输出和映射工艺 约束内容:门级电路所占用的面积范围、延迟、功耗和可测性等 81.3属性 属性的作用:对设计的执行环境进行规定。 属性内容:负载、驱动、到达时间等 814工艺庳 工艺库中含有综合过程为建立设计作正确选择的全部信息,如含有ASIC单元 的逻辑功能、含有该单元的面积范围、输入到输出的定时关系等 82综合过程 采用 processing/stat/ start analysis synthesis 或 processing/star/ start analysis& elaboration指令进行分析和综合 ●采用 Tools/ netlist viewer/ RTLviewer 或Tol!/ netlist viewer/ Technology map viewer查看原理图
8.1.2 约束 约束的目的:有效的控制优化输出和映射工艺 约束内容:门级电路所占用的面积范围、延迟、功耗和可测性等 8.1.3 属性 属性的作用:对设计的执行环境进行规定。 属性内容:负载、驱动、到达时间等 8.1.4 工艺库 工艺库中含有综合过程为建立设计作正确选择的全部信息,如含有ASIC单元 的逻辑功能、含有该单元的面积范围、输入到输出的定时关系等 8.2 综合过程 ⚫采用processing/start/start analysis & synthesis 或processing/start/start analysis & elaboration指令进行分析和综合 ⚫采用Tools/netlist viewer/RTL viewer 或Tools/netlist viewer/Technology map viewer查看原理图
第九章存储器设计范侧 91只读存储器(ROM 逻辑功能:在地址信号的选择下从指定存储单元中读取相应的数据 例:16×8只读存储器 rom en-使能端 ddr3…0 adr-地址选择信号输入端 data【7…0 en data-数据输出端 rom的电路符号 library ieee use ieee std logic_1164.all; use ieee std_logic_unsigned. all entity roms port(en: in std _logic; lddr: in std_logic_vector(3 0); data: out std logic_vector(7 downto 0); d rom:
第九章 存储器设计范例 9.1 只读存储器(ROM) 逻辑功能:在地址信号的选择下从指定存储单元中读取相应的数据 例:16×8只读存储器 rom的电路符号 addr[3…0] data[7…0] en –使能端 data – 数据输出端 rom en addr – 地址选择信号输入端 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity rom is port(en:in std_logic; addr: in std_logic_vector(3 downto 0); data:out std_logic_vector(7 downto 0)); end rom;
architecture one of rom is type memory is array(o to 15)of std_logic_vector(7 downto O) signal data1: memory:=(“10101001”,“11 11101001 11011100,“10111001”,“1100010,“11000101”, “00110100·1 00000100 1101100”,410001010”,“11001111 11000001 10011111 10100101” 0101110); signal addr1: integer range 0 to 15; addr1<=conv_integer(addr) process(en, addr1, addr, data1) then data<=datal(addr1) e data<=“ ZZZZZZZZ; nd if process d one
architecture one of rom is type memory is array(0 to 15) of std_logic_vector(7 downto 0); signal data1:memory:=(“10101001”, “11111101”, “11101001”, “11011100”, “10111001”, “11000010”, “11000101”, “00000100”, “11101100”, “10001010”, “11001111”, “00110100”, “11000001”, “10011111”, “10100101”, “01011100”); signal addr1: integer range 0 to 15; begin addr1<=conv_integer(addr); process (en, addr1, addr, data1) begin if en=‘1’ then data<=data1(addr1); else data<=“ZZZZZZZZ”; end if; end process; end one;
唸 Master Time Ba 199ns 4. Pointer 565m nterval 14.25ns A P2.0n40n6.0as8.0a109a129n149a16.9a189n20.9n229n249ns269ns [3 [2] [0 [4] 4498 B data B 101ckzzzzzz2 (1011001101001 1111101- 10101001 10111001 会↓
92随机存储器RAM 功能:在地址信号的选择下对指定的存储单元进行相应的读/写操作 例:32×8的随机存储器 ram adr-地址选择信号输入端 wr-写信号输入端 adr4… rd-读信号输入端 wr dataout[7…0 cs-片选信号输入端 datain-数据写入端 dataout-数据输出端 datain【7…·Q ram的电路符号 library ieee; use ieee std _logic1164.all use ieee std_logic_unsigned.all; entity ram port(wr, rd, cs in std_ logic addr: in std_logic_vector(4 downto O); datain: in std logic_vector(7 downto O dataoutout std _logic_vector(7 end ram;
9.2 随机存储器RAM 功能:在地址信号的选择下对指定的存储单元进行相应的读/写操作 例:32×8的随机存储器 ram的电路符号 addr[4…0] wr rd cs datain[7…0] dataout[7…0] ram addr – 地址选择信号输入端 wr – 写信号输入端 rd – 读信号输入端 cs – 片选信号输入端 datain –数据写入端 dataout –数据输出端 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ram is port(wr,rd,cs:in std_logic; addr: in std_logic_vector(4 downto 0); datain:in std_logic_vector(7 downto 0); dataout:out std_logic_vector(7 downto 0)); end ram;