版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章目录时序电路概述同步电路基本存储单元的引用简单的设计例子时序分析一段式代码风格时序电路中变量的使用本章目录时序电路概述组合电路和时序电路时序电路:输出是输入和当前状态的函数基本记忆单元D 锁存器D 触发器RAM时序电路概述组合电路和时序电路时序电路概述D锁存器是电平敏感的记忆单元,而D触发器是边沿敏感的记忆单元对于D锁存器,当时钟信号c为高电平时,下一个状态q*=d,当时钟信号c为低电平时,q*=q(保持)dcq(a)D 锁存器cq*0q1dD锁存器D锁存器是电平敏感的记忆单元,而D触发器是边沿敏感的记忆单元D锁存器的时序图(d在c的下降沿处被采样和保存)D锁存器D锁存器的时序图(d在c的
2、下降沿处被采样和保存)D锁存器D触发器只有在clk信号的跳变沿处有效(01或10)dclkq(b)上升沿D 触发器dclkq(c)下降沿D 触发器clkq*0q1qdclkq*0q1qd“有效”的含义是指:d的值只有在clk的边沿处被采样和保存,并更新输出qD触发器D触发器只有在clk信号的跳变沿处有效(01或10)dcD触发器的优点d端口小小的毛刺不会影响到存储的状态消除了竞争的条件,交换数据的电路可以工作D触发器的缺点是D锁存器的两倍大小D触发器D触发器的优点D触发器时序图如下: Clock-to-q 延时(Tcq): 信号d被采样到更新q的延时建立时间(Tsetup): 在时钟的上升沿来
3、临之前,d必须保持稳定的时间保持时间(Thold): 在时钟上升沿到来之后,d必须保持稳定的时间D触发器时序图如下: Clock-to-q 延时(Tcq): 信号d时序图如下:(续)Tcq代表组合电路的传播延时Tsetup 和Thold 是时序约束,d必须在clk的时间间隔内保持稳定。如果d在这个时隙内改变,这样就会违反建立时间和保持时间的规则,导致触发器进入亚稳态(q不是0也不是1)D触发器时序图如下:(续)Tcq代表组合电路的传播延时D触发器在时序电路中,时钟信号扮演着一个很重要的角色系统可以根据时钟的布局来分类全局同步电路所有的存储单元都在同一个全局时钟的控制下工作全局异步-局部同步电路
4、(GALS)设计的器件传输分开得太远,无法使用单个同步时钟的情况下,只能使用一个全局的异步时钟然而,较小的子系统内部使用一个同步的时钟在子系统之间需要特殊的电路接口来保证正常的工作时钟信号在时序电路中,时钟信号扮演着一个很重要的角色全局同步电路全局全局异步电路没有时钟来协调存储单元的工作,大致分为两类。时钟 的使用是没有规律的,例如行波计数器:触发器的时钟端口连接上一个触发器的输出q端口。(这种设计并不完美,不推荐)系统带有不需要时钟的存储单元(如D锁存器)或者带有反馈回路的组合电路(异步电路)。时钟信号合理的异步电路设计和同步电路完全不同,而且HDL的综合工具不太推荐全局异步电路时钟信号合理
5、的异步电路设计和同步电路完全不同,而状态寄存器(state_reg) :代表存储单元的状态下一个状态逻辑(Next state logic ):代表决定state_next的组合电路同步电路状态寄存器(state_reg) :代表存储单元的状态同步电操作如下:在时钟信号的上升沿, state_next 被采样和保存在寄存器中,成为新的state_reg的值。外部输入和state_reg 信号传输到next-state 和输出来决定新的next-state 和新的输出信号在时钟信号的上升沿, 新的state_next重新被采样和保存,然后重复进程需要注意的是时钟周期需要足够大来适应触发器的nex
6、t-state 逻辑传播延时、clock-to-q 延时、建立时间延时同步电路操作如下:需要注意的是时钟周期需要足够大来适应触发器的nex同步设计的优势单个的全局时钟让成千上万个触发器构建的电路能够统一控制和满足时序约束。一个同步的模块把组合逻辑器件从存储单元中分离出来,实现组合逻辑部分的单独优化。传播延时的反常情况很容易通过分析最差的时序行为来处理因此,同步模块把一个复杂的时序电路变为单个的闭环反馈回路和简化设计的流程同步电路同步设计的优势因此,同步模块把一个复杂的时序电路变为单个的闭同步电路的类型常规的时序电路状态表示,转变和下个状态逻辑有一个简单,常规的模式,例如一个自增的计数器或者一个
7、移位寄存器。随机的时序电路(FSM)更复杂的状态迁移且状态和它们的二进制表示没有特殊的联系。即,下一个状态逻辑是随机的。组合成的时序逻辑 (带有数据通路的FSM, FSMD - RTL)组合常规时序电路和有限状态机,用有限状态机来控制时序电路的行为同步电路同步电路的类型同步电路当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式,综合工具会自动推断出来,生成合适的器件。D锁存器隐含的else语句会产生D锁存器library ieee;use ieee.std_logic_1164.all;entity dlatch isport( c: in std_logic; d: in std_
8、logic; q: out std_logic );end dlatch;architecture arch of dlatch is begin - c and d in sens. list b/c process sens. to bothprocess(c, d)beginif (c=1) then q = d;end if;end process;end arch;dcq(a)D 锁存器基本存储单元的引用当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式,综合工具会自动推断出来,生成合适的器件。上升沿D触发器没有e
9、lse语句且对时钟跳变信号敏感library ieee;use ieee.std_logic_1164.all;entity dff isport( clk: in std_logic; d: in std_logic; q: out std_logic );end dff;architecture arch of dff is beginprocess(clk)begin - when d changes (unlike latch)if (clkevent and clk=1) then - can also use q = d; - rising_edge(clk)end if; end
10、 process;end arch;dclkq(b)上升沿D 触发器基本存储单元的引用当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式下降沿D触发器只需要上升沿的程序稍作修改即可(红色为修改的部分)library ieee;use ieee.std_logic_1164.all;entity dff isport( clk: in std_logic; d: in std_logic; q: out std_logic );end dff;architecture arch of dff is beginprocess(clk)begin - when d changes (unl
11、ike latch)if (clkevent and clk=0) then - can also use q = d; - falling_edge(clk)end if; end process;end arch;dclkq(c)下降沿D 触发器基本存储单元的引用下降沿D触发器library ieee;dclkq(c)下降带异步复位的D触发器library ieee;use ieee.std_logic_1164.all;entity dffr isport( clk: in std_logic; reset: in std_logic; d: in std_logic; q: out s
12、td_logic );end dffr;architecture arch of dffr is beginprocess(clk,reset)beginif (reset=1) then q =0;elsif rising_edge(clk) then q = d;end if;end process;end arch;dclkq(d)带异步复位的D 触发器reset基本存储单元的引用带异步复位的D触发器library ieee;dclkq(d寄存器由多个共用同样时钟信号和复位信号的D触发器并联而成library ieee;use ieee.std_logic_1164.all;entity
13、 reg8 isport( clk, reset: in std_logic; d: in std_logic_vector(7 downto 0); q: out std_logic_vector(7 downto 0) );end reg8;architecture arch of reg8 is beginprocess(clk, reset)beginif (reset=1) then q 0);elsif (clkevent and clk=1) then q = d;end if;end process; end arch;基本存储单元的引用寄存器library ieee;基本存储
14、单元的引用最简单的设计时序电路的方法是根据框图来搭建构建寄存器编写下一个状态和输出逻辑(组合电路)的代码简单的设计例子最简单的设计时序电路的方法是根据框图来搭建构建寄存器简单的设带有同步使能端的D触发器注意:en的值在clk的上升沿被采样当en=0,或者由0变为1,触发器保持输出q不变当en=1,或者由1变为0,触发器保存q_next的值简单的设计例子带有同步使能端的D触发器当en=0,或者由0变为1,触发器保带有同步使能端的D触发器(代码)library ieee;use ieee.std_logic_1164.all;entity dff_en isport( clk: in std_lo
15、gic; reset: in std_logic; en: in std_logic; d: in std_logic; q: out std_logic );end dff_en;architecture two_seg_arch of dff_en issignal q_reg: std_logic;signal q_next: std_logic; begin - D FFprocess(clk, reset)beginif (reset=1) then q_reg = 0;elsif (clkevent and clk=1) then q_reg = q_next;end if;end
16、 process; - next-state logic q_next = d when en =1 else q_reg; - output logic q = q_reg;end two_seg_arch;简单的设计例子带有同步使能端的D触发器(代码)library ieee;简T触发器注意:t的值在clk的上升沿被采样简单的设计例子T触发器简单的设计例子T触发器(代码)library ieee;use ieee.std_logic_1164.all;entity tff isport( clk: in std_logic; reset: in std_logic; t: in std_l
17、ogic; q: out std_logic );end tff;architecture two_seg_arch of tff issignal q_reg: std_logic;signal q_next: std_logic;begin - D FFprocess(clk, reset)beginif (reset=1) then q_reg = 0;elsif (clkevent and clk=1) then q_reg = q_next;end if;end process; - next-state logic q_next = q_reg when t=0 elsenot(q
18、_reg); - output logic q = q_reg;end two_seg_arch;简单的设计例子T触发器(代码)library ieee;简单的设计例子移位寄存器(无控制信号)我们可以重新调整触发器使其成为一列然后把它看成一个存储器块,如下图所示。简单的设计例子移位寄存器(无控制信号)我们可以重新调整触发器使其成为一列然移位寄存器(无控制信号)简单的设计例子移位寄存器(无控制信号)简单的设计例子移位寄存器(无控制信号)代码library ieee;use ieee.std_logic_1164.all;entity shift_right_register isport( cl
19、k, reset: in std_logic; d: in std_logic; q: out std_logic );end shift_right_register;architecture two_seg_arch of shift_right_register issignal r_reg: std_logic_vector(3 downto 0);signal r_next: std_logic_vector(3 downto 0);begin - registerprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (cl
20、kevent and clk=1) then r_reg = r_next;end if;end process; - next-state logic (shift right 1 bit) r_next = d & r_reg(3 downto 1); - output q = r_reg(0);end two_seg_arch;简单的设计例子移位寄存器(无控制信号)代码library ieee;简单的通用移位寄存器设计为4个操作方式:并行、左移、右移、暂停简单的设计例子通用移位寄存器简单的设计例子通用移位寄存器(代码)library ieee;use ieee.std_logic_116
21、4.all;entity shift_register isport( clk, reset: in std_logic; ctrl: in std_logic_vector(1 downto 0); d: in std_logic_vector(3 downto 0); q: out std_logic_vector(3 downto 0) );end shift_register;architecture two_seg_arch of shift_register issignal r_reg: std_logic_vector(3 downto 0);signal r_next: st
22、d_logic_vector(3 downto 0);begin - registerprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_next;end if;end process; - next-state logicwith ctrl select r_next =r_reg when 00, - no op r_reg(2 downto 0) & d(0) when 01, - sft left d(3) & r_reg(3 downto 1) whe
23、n 10, - sft rght d when others; - output q = r_reg;end two_seg_arch;简单的设计例子通用移位寄存器(代码)library ieee;简单的设计例任意序列计数器Input patternOutput pattern000011011110110101101111111000library ieee;use ieee.std_logic_1164.all;entity arbi_seq_counter4 isport( clk, reset: in std_logic; q: out std_logic_vector(2 downt
24、o 0) );end arbi_seq_counter4;architecture two_seg_arch of arbi_seq_counter4 issignal r_reg: std_logic_vector(2 downto 0);signal r_next: std_logic_vector(2 downto 0); begin - registerprocess(clk, reset)beginif (reset=1) then简单的设计例子任意序列计数器Input patternOutput pat任意序列计数器(续) r_reg 0);elsif (clkevent and
25、clk=1) then r_reg = r_next;end if;end process; - next-state logic r_next = 011 when r_reg=000 else 110 when r_reg=011 else 101 when r_reg=110 else 111 when r_reg=101 else 000; - r_reg=111 - output logic q = r_reg;end two_seg_arch;Input patternOutput pattern000011011110110101101111111000简单的设计例子任意序列计数
26、器(续) r_reg 自由运行的二进制计数器当计数器的值全部为1时,输出最大脉冲,并自动轮回library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity binary_counter4_pulse isport( clk, reset: in std_logic; max_pulse: out std_logic; q: out std_logic_vector(3 downto 0) );end binary_counter4_pulse;architecture two_seg_arch of binary
27、_counter4_pulse issignal r_reg: unsigned(3 downto 0);signal r_next: unsigned(3 downto 0); begin - registerprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_next;end if;end process; - next-state logic r_next = r_reg + 1; - output logic q = std_logic_vector(r
28、_reg); max_pulse = 1 when (r_reg=1111) else 0;end two_seg_arch;简单的设计例子自由运行的二进制计数器library ieee;简单的设计例自由运行的二进制计数器RTL原理图简单的设计例子自由运行的二进制计数器简单的设计例子二进制计数器Syn_clrloadenq*操作1-00.00同步清零01-d并行载入001q+1计数000q暂停简单的设计例子二进制计数器Syn_clrloadenq*操作1-00.二进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std
29、.all;entity binary_counter4_feature isport( clk, reset: in std_logic; syn_clr, en, load: in std_logic; d: in std_logic_vector(3 downto 0); q: out std_logic_vector(3 downto 0) );end binary_counter4_feature;architecture two_seg_arch of binary_counter4_feature issignal r_reg: unsigned(3 downto 0);signa
30、l r_next: unsigned(3 downto 0); begin - registerprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_next;end if;end process; - next-state logic r_next 0) when syn_clr=1 else unsigned(d) when load=1 else r_reg + 1 when en =1 else r_reg; - output logic q = std_
31、logic_vector(r_reg);end two_seg_arch;简单的设计例子二进制计数器library ieee;简单的设计例子十进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity mod10_counter isport( clk, reset: in std_logic; q: out std_logic_vector(3 downto 0) );end mod10_counter;architecture two_seg_arch of mod10_counter isco
32、nstant TEN: integer := 10;signal r_reg: unsigned(3 downto 0);signal r_next: unsigned(3 downto 0); begin - registerprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_next;end if;end process; - next-state logic r_next 0) when r_reg=(TEN-1) else r_reg + 1; - ou
33、tput logic q = std_logic_vector(r_reg);end two_seg_arch;简单的设计例子十进制计数器library ieee;简单的设计例子可编程的m进制计数器可以通过改变一个常数m来改变计数器的进制,范围为“0010”“1111”library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity prog_counter isport( clk, reset: in std_logic; m: in std_logic_vector(3 downto 0); q: out st
34、d_logic_vector(3 downto 0) );end prog_counter;architecture two_seg_clear_arch of prog_counter issignal r_reg: unsigned(3 downto 0);signal r_next: unsigned(3 downto 0);begin - registerprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_next;end if;end process;
35、 - next-state logic r_next 0) when r_reg=(unsigned(m)-1) else简单的设计例子可编程的m进制计数器library ieee;简单的设计例子可编程的m进制计数器(续)可以通过改变一个常数m来改变计数器的进制,范围为“0010”“1111” r_reg + 1; - output logic q = std_logic_vector(r_reg);end two_seg_clear_arch;architecture two_seg_effi_arch of prog_counter issignal r_reg: unsigned(3 d
36、ownto 0);signal r_next, r_inc: unsigned(3 downto 0); begin - registerprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_next;end if;end process; - next-state logic r_inc = r_reg + 1; r_next 0) when r_inc=unsigned(m) else r_inc; - output logic q = std_logic_v
37、ector(r_reg);end two_seg_effi_arch;简单的设计例子可编程的m进制计数器(续) r_reg + 1;简单的设计例简单的设计例子可编程的m进制计数器(续)RTL原理图简单的设计例子可编程的m进制计数器(续)组合电路用传播延时来描述时序电路必须要满足建立和保持时间,用最大时钟频率来描述(例如:200MHz的计数器,2.4GHz的奔腾II)建立时间、寄存器的clock-to-q延时和下一个状态的传播延时,都嵌套在时钟频率中。时序分析State_next信号必须满足触发器的时序约束组合电路时序分析State_next信号必须满足触发器的时序state_next的延迟受三
38、个源影响state_reg的输出(部分相同反馈回路和同步时钟)和外部使用相同时钟的子系统输入同步和外部输入异步对于前两个项目,我们可以调节时钟的频率来阻止时序违反请看下面的时序图(展示了闭环反馈系统的时序行为),在t0时刻,时钟由0变为1。我们假设state_next在建立和保持的周期内不会改变在clock-to-q (Tcq)延迟之后,寄存器的输出state_reg在时刻t1(t0+Tcq)保持稳定时序分析state_next的延迟受三个源影响时序分析因为state_reg是state_next逻辑的输入, state_next逻辑的输出在时间Tnext(min)和Tnext(max)改变,
39、分别表示最快和最慢的路径。因此, state_next在t2(t1+ Tnext(min) )时刻改变,在t3(t1+ Tnext(max) )时刻稳定。时序分析因为state_reg是state_next逻辑的输入, s在t5时刻,一个新的上升沿时钟到达且当前的时钟周期结束。 state_next在t5时刻被采样。时序分析在t5时刻,一个新的上升沿时钟到达且当前的时钟周期结束。 s下面来考虑一下建立时间的约束,state_next信号在下一个采样边沿t5到来之前的Tsetup时间内必须保持稳定。(t5由时序图中的t4给定)t3t4从时序图可以看出:t3=t0+Tcq+Tnext(max) t
40、4=t5-Tsetup=t0+Tc-Tsetup上面的不等式可以改写为t0+Tcq+Tnext(max) t0+Tc-Tsetup可以化简为Tcq+Tnext(max) +Tsetup Tc因此,最小的时钟周期是Tc(min) = Tcq + Tnext(max) + Tsetup时序分析下面来考虑一下建立时间的约束,state_next信号在下一时序分析对于特定的技术,D触发器的Tcq和Tsetup可以从数据手册获得。让Tcq=1ns,Tsetup=0.5ns,因为1位的移位逻辑仅仅包含线网,所以假设它线网的连接延时 是0,因此其最高的频率为1/1.5 ns = 666.7 MHz下文讲述一
41、下和其它组合块联合的例子,其延时大于0.时序分析对于特定的技术,D触发器的Tcq和Tsetup可以从时序分析保持时间违反输入的信号在采样沿之后必须要保持一段时间start_next 在t0 和 th (t0 + Thold)内必须保持稳定。时序分析保持时间违反输入的信号在采样沿之后必须要保持一段时间时序分析保持时间违反state_next 最早改变的时刻是t2th t2 且 t2 = t0 + Tcq + Tnext(min)th = t0 + Thold所以 t0 + Thold t0 + Tcq + Tnext(min)化简得 Thold Tcq + Tnext(min)因为触发器的输出驱
42、动下一级的输入, Tnext(min)约等于0且Thold Tcq器件厂商通常会保证触发器这些内在参数的满足关系,但时钟偏斜问题是值得我们考虑的。时序分析保持时间违反state_next 最早改变的时刻是t时序分析我们也需要考虑外部输入输出的时钟特征(除了刚才提到的闭环反馈回路)电路的输出可以分为:摩尔( Moore )输出和米利( Mealy )输出对于摩尔输出,输出的信号取决于当前系统的状态,而米利输出取决于当前系统的状态和外部输入。这两种输出可以同时存在于同一个电路中。这两种输出主要时间参数是Tco(在时钟的上升沿后获得一个有效输出所需要的时间)时序分析我们也需要考虑外部输入输出的时钟特
43、征(除了刚才提到的时序分析Tco 是触发器的clock-to-q延时和输出的传播延时之和Tco = Tcq + Toutput对于米利型输出,输入可以直接影响输出。时序分析Tco 是触发器的clock-to-q延时和输出的传一段式代码风格尽管可以把下一个状态的存储单元和输出都写在同一段代码中,但尽可能避免这样的写法,因为很容易出错。思考一下这段带使能信号的D触发器代码。architecture one_seg_arch of dff_en is beginprocess(clk, reset)beginif (reset=1) then q =0;elsif (clkevent and clk
44、=1) thenif (en=1) then q = d;end if;end if;end process;end one_seg_arch;在elsif里面多加了一行if (en=1),我们可以解释为,当在时钟的上升沿到来的时候,如果en=1,则q=d。缺少的else语句隐含着当en不等于1时,q的值要保持。 一段式代码风格尽管可以把下一个状态的存储单元和输出都写在同一一段式代码风格再思考一下T触发器的代码。architecture one_seg_arch of tff issignal q_reg: std_logic; beginprocess(clk, reset)beginif
45、(reset=1) then q_reg = 0;elsif (clkevent and clk=1) thenif (t=1) then q_reg = not q_reg;end if;end if;end process; q = q_reg;end one_seg_arch;这里的内部信号q_reg代表着触发器的输出。“q_reg = not q_reg;”这句一眼看上去很奇怪,其实它可以解释为:左边的是新的值( 结果为not q_reg ),右边的是当前值( q_reg )。一段式代码风格再思考一下T触发器的代码。architectu一段式代码风格思考一下自由运行的二进制计数器,下面
46、是一段错误的一段式代码。architecture not_work_one_seg_glitch_archof binary_counter4_pulse issignal r_reg: unsigned(3 downto 0); beginprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_reg + 1;if (r_reg = 1111) then max_pulse = 1;else max_pulse = 0;end if;end if;end proc
47、ess; q = std_logic_vector(r_reg);end not_work_one_seg_glitch_arch;一段式代码风格思考一下自由运行的二进制计数器,下面是一段错误一段式代码风格错误的原因是if (r_reg = 1111) then max_pulse = 1;else max_pulse = 0;end if; 这段代码在输出端多增加了一个缓冲,输出结果会有一个时钟的延时。其综合出来的结果如图所示。这个不可以有一段式代码风格错误的原因是if (r_reg = 1111一段式代码风格修改的方法是把输出逻辑在进程中移除出去。architecture work_one
48、_seg_glitch_archof binary_counter4_pulse issignal r_reg: unsigned(3 downto 0); beginprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_reg + 1;end if;end process; q = std_logic_vector(r_reg); max_pulse = 1 when r_reg = 1111 else 0;end work_one_seg_glitch_arc
49、h;一段式代码风格修改的方法是把输出逻辑在进程中移除出去。arc一段式代码风格再举一个例子可编程的计数器architecture not_work_one_arch of prog_counter issignal r_reg: unsigned(3 downto 0); beginprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) then r_reg = r_reg + 1;if (r_reg = unsigned(m) then r_reg0);end if;end if;end pr
50、ocess; q = std_logic_vector(r_reg);end not_work_one_arch;这个计数器并没有按照预期的目的工作,因为里面有一个信号直到进程的结束才会更新。一段式代码风格再举一个例子可编程的计数器architec一段式代码风格因为r_reg在r_reg = r_reg + 1这句执行后,还没有来得及更新,我们就用它来进行“r_reg = unsigned(m)”比较,这个是旧的值,这样设计出来的计数器会比预设的多一个数。(例如本来想设计8进制的,现在就变成9进制了)为了修改,我们把自增的操作移到进程外面。architecture work_one_arch of prog_counter issignal r_reg: unsigned(3 downto 0);signal r_inc: unsigned(3 downto 0); beginprocess(clk, reset)beginif (reset=1) then r_reg 0);elsif (clkevent and clk=1) thenif (r_inc = unsigned(m) then r_reg 0);else r_reg = r_inc;end if;end if;end process; r_inc = r_reg + 1; q = s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年珠编挂件教案
- 广西百色市西林民族高中2026届高一生物第二学期期末调研试题含解析
- 2025-2026学年政治教案怎么写
- 2026 年中职地质灾害调查与治理施工(防护工程)试题及答案
- 青海省西宁市大通县第一中学2026届高一下数学期末复习检测试题含解析
- 2.3 制取氧气教学设计(2025-2026学年九年级化学人教版上册)1
- 2025-2026学年卖报歌教学设计教案模板
- 福建省宁德市普通高中2026届高一生物第二学期期末达标检测试题含解析
- 山西应用科技学院《数据图像处理及应用》2024-2025学年第二学期期末试卷
- 湖南科技职业学院《综合英语:数理》2024-2025学年第二学期期末试卷
- 《智能制造单元集成应用》课件-智能制造单元概述
- 中学-学年第二学期教科室工作计划
- 2024年贵州省公务员考试《行测》真题及答案解析
- DB34T 3267-2024 公路养护工程设计文件编制规范
- GB/T 3163-2024真空技术术语
- GB/T 24203-2024炭素材料体积密度、真密度、真气孔率、显气孔率的测定方法
- 英语阅读理解50篇
- 初三化学溶液专题训练习题
- 催化剂导论课件
- FZ∕T 74001-2020 纺织品 针织运动护具
- (高清版)DZT 0017-2023 工程地质钻探规程
评论
0/150
提交评论