硬件描述语言vhdl及其应用内容摘要:
1/23 43 并发赋值语句 D = A + E。 A = B + C。 + + B C E A D 哈尔滨工业大学微电子中心 2020/11/23 44 并发赋值语句 (Cont.) A = B + A。 并发赋值语句: + A B A C = A。 C = B。 A B C 组合逻辑环路。 Multidriver, need resolved function 哈尔滨工业大学微电子中心 2020/11/23 45 顺序赋值语句 D = A + E。 A = B + C。 + + B C E A D 哈尔滨工业大学微电子中心 2020/11/23 46 顺序赋值语句 (Cont.) C = A。 C = B。 B C A = B + A。 组合进程: No! 时序进程: Ok! + A B A 哈尔滨工业大学微电子中心 2020/11/23 47 小结 i. 一个设计由 entity和 architecture描述 ii. 数据对象类型有 bit, boolean, integer, std_logic等标准类型和用户自定义类型 iii. 并发语句执行与书写顺序无关( order independent) iv. VHDL是一种强类型语言(类型不能自动相互转换) v. 元件例化语句不能在 process中, if语句和 for语句用于并发语句时,只能是 generate语句,并发语句无变量赋值语句 哈尔滨工业大学微电子中心 2020/11/23 48 小结 (Cont.) entity shift is port( reset, clk : in std_logic。 din : in std_logic。 dout : out std_logic)。 end shift。 architecture str of shift is ponent dff port(reset, clk : in std_logic。 d : in std_logic。 q : out std_logic)。 end ponent。 signal tv : std_logic_vector(0 to 7)。 begin for I in 0 to 7 generate if I = 0 generate u1 : dff port map(reset, clk, din, tv(0))。 end generate。 if I 0 and I = 7 generate u2 : dff port map(reset, clk, tv(I – 1), tv(I))。 end generate。 end generate。 dout = tv(7)。 end str。 哈尔滨工业大学微电子中心 2020/11/23 49 process 描述电路功能或行为。 由于综合后的电路对所有输入信号变化敏感,因此所有 被读 信号均应包含在敏感表中,否则,综合前的模拟结果与综合后的模拟结果不一致。 哈尔滨工业大学微电子中心 2020/11/23 50 syntax [process_label :] process(sensitivity list) [declarations。 ] begin statements。 if, loop, case, subprogram call etc end process [process_label]。 哈尔滨工业大学微电子中心 2020/11/23 51 syntax P1 : process(A, B) Begin D = A or B and C。 End process P1。 P1 : process(A, B, C) Begin D = A or B and C。 End process P1。 哈尔滨工业大学微电子中心 2020/11/23 52 munication among process Assignment If, case, loop etc Signal_N Signal_3 Signal_1 Signal_2 Process A Process B architecture example 哈尔滨工业大学微电子中心 2020/11/23 53 if then else语句综合 i/. 引入寄存器 entity dff is port (d : in std_logic。 clk : in std_logic。 q : out std_logic)。 End dff。 architecture rtl of dff is begin infer_reg : process(d, clk) begin if (clk‘event and clk = ‗1‘) then q = d。 end process infer。 end rtl。 哈尔滨工业大学微电子中心 2020/11/23 54 if then else语句综合 (Cont.) ii/. 引入锁存器 Infer_latch : process(A, B) begin if (A = ‗1‘) then x = B。 end process infer_infer_latch。 Infer_latch : process(A, B) Begin x = ‘0’。 if (A = ‗1‘) then x = B。 end process infer_infer_latch。 隐含了 A = ‗0‘时 x = x。 不完全的 else 哈尔滨工业大学微电子中心 2020/11/23 55 if then else语句综合 (Cont.) iii/. 组合电路 entity b is port(a, b : in bit。 select : in bit。 y : out bit)。 end b。 architecture arch of b is begin process(a, b, select) begin if (select = ‗1‘) then y = b。 else y = a。 end if。 end process。 end arch。 b a y select 1 0 哈尔滨工业大学微电子中心 2020/11/23 56 if then else语句综合 (Cont.) iv/. 异步复位 process(reset, clk, d) Begin if (reset = ‗0‘) then q = ‗0‘。 elsif (clk‘event and clk = ‗1‘) then q = d。 end if。 end process。 d clk reset q 哈尔滨工业大学微电子中心 2020/11/23 57 if then else语句综合 (Cont.) v/. 三态逻辑 signal s, sel, data : std_logic。 process(sel, data) Begin if (sel = ‗1‘) then s = data。 else s = ‗Z‘。 end if。 end process。 sd a t as e l1 哈尔滨工业大学微电子中心 2020/11/23 58 if then else语句综合 (Cont.) v/. 三态逻辑 architecture beh of tribuf is signal asel, bsel, a, b, s : std_logic。 begin pa : process(asel, a) begin s = ‗Z‘。 if (asel = ‗1‘) then s = a。 end if。 end process pa。 saa s e lbb s e l2 pb : process(bsel, b) begin s = ‗Z‘。 if (bsel = ‗1‘) then s = b。 end if。 end process pb。 end beh。 Multi driver!! 哈尔滨工业大学微电子中心 2020/11/23 59 if then else语句综合 (Cont.) Discussion signal a, b, use_b : bit。 process(a, b, use_b) Begin if (use_b = ‗1‘) then s = b。 elseif(use_b = ‗0‘) then s = a。 end if。 end process。 1 Latch? 哈尔滨工业大学微电子中心 2020/11/23 60 if then else语句综合 (Cont.) Discussion signal a, b, use_b : std_logic。 process(a, b, use_b) Begin if (use_b = ‗1‘) then s = b。 elseif(use_b = ‗0‘) then s = a。 end if。 end process。 2 Latch? 哈尔滨工业大学微电子中心 2020/11/23 61 if then else语句综合 (Cont.) Discussion else assert false report ―invalid use_b‖ severity error。 end if。 end process。 3 what? signal a, b, use_b : std_logic。 process(a, b, use_b) Begin if (use_b = ‗1‘) then s = b。 elseif(use_b = ‗0‘) then s = a。 哈尔滨工业大学微电子中心 2020/11/23 62 if then else语句综合 (Cont.) vi/. 在一个进程中,一个信号只能对应一个三态驱动 process(b, ub, a, ua) Begin dout = ‗Z‘。 if (ub = ‗1‘) then dout = b。 end if。 if (ua = ‗1‘) then dout = a。 end if。 end process。 au abu bd o u t哈尔滨工业大学微电子中心 2020/11/23 63 if then else语句综合 (Cont.) vii/. ‗Z‘值使用规则 如: dout = ‗Z‘ and din。 如: if (sel = ‗Z‘) then 相当于 if false then 某个信号被赋值 ‘ Z‘值时,将会引入三态驱动,但‘ Z‘值不能用于复杂的表达式中(逻辑 /算术表达式) 1 当信号与 ‘ Z‘值比较时,结果总为 false,引用这样的关系表达式将导致模拟与综合结果不匹配 2 哈尔滨工业大学微电子中心 2020/11/23 64 if then else语句综合 (Cont.) vii/. if then else语句小结 可以描述顺序行为 1 可以。硬件描述语言vhdl及其应用
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。