当前位置:文档之家› 时序电路设计

时序电路设计


《EDA技术与SOPC基础》
语法总结
2 、时钟进程设计规律
(1)如果将某一信号A定义为边沿敏感时钟信号,则必须在敏感信号列表中给出 相应的表述,如posedge A或negedge A;但在always进程中不能再出现信号A了。 (2)如果将某信号B定义为对应于时钟的电平敏感的异步控制信号,则除了在敏 感信号列表中给出对应的表述外,如posedge B或negedge B,在always进程中必须 明示信号B的逻辑行为,如例3-7中的RST。特别注意这种表述的不一致性,即敏 感信号声明为边沿型,但电路中却使用为电平型敏感信号。 (3)如果将某信号定义为对应于时钟的同步控制信号,则绝不能以任何形式出 现在敏感信号列表中。 (4)敏感信号列表中一旦出现类似posedge或negedge的边沿型敏感表述,则绝不 允许出现其他非敏感信号的表述。即敏感和非敏感表述不能同时出现在敏感信号 列表中;每个过程语句中只能放置一种类型的敏感信号,不能混放。
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
语法总结
1 、时钟进程表述的特点
当敏感信号表中含有边沿敏感的posedge或negedge时,选择性地改变
敏感信号的放置是会影响综合结果的。对于例3-7中虽然放置了RST的边沿敏感 信号,但在模块中,它实际上是独立于时钟CLK的电平敏感型变量,这好像与 negedge的本意不符,但在程序代码描述中,的确采用的电平判断。 在敏感列表中放置了posedge或negedge的边沿信号后,所有其他
四 川 工பைடு நூலகம்商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
EDA 技术与
SOPC 基础
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
设计实现代码(3)
4. 异步时序电路设计
可以将含有时钟边沿敏感的过程语句称为时钟进程。在时序电路设 计中应注意,一个时钟进程只能构成对应单一时钟信号的时序电路。如
//声明D触发器基本模块
CLK)
//CLK上升沿启动 //当CLK上升沿时D被锁入Q
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
语法总结
1. 信号边沿触发表达
由关键词posedge引导的表达式可以理解为是对某一信号上
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
在例3-9中赋值语句“Q1<=Q1+1;”是一个累加操作,为了方便作累加 运算,必须定义一个内部的寄存器变量,来具备输入和输出的特性,即这里 的Q1。因为在累加表达式Q1<=Q1+1中,Q1出现在赋值符号的两边,表 明Q1须具有输入和输出两种模式的特性,同时它的输入特性应该是反馈方 式,即“<=”右边的Q1来自左边的Q1输出信号的反馈。该代码综合后的 RTL电路结构图如图3.13所示。
always @ (CLK or D) if (CLK) Q<=D; //当CLK为高电平时Q的值更新为D的输入 endmodule
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
always @ ( posedge CLK)
“posedge
CLK”如果出现在过程语句的敏感信号列表,此时综
合器会自动构建以边沿触发型的时序结构。因此“posedge CLK”可以认 为是时序元件对CLK信号上升沿敏感的标志符号,即凡是边沿触发 性质的时序元件必须使用时钟边沿敏感表述,放置在always过程语句的敏 感信号列表中。而没有使用该敏感表述标志所产生的电路都是电平敏感性时
时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和
脉冲序列以及进行数字运算等,像数字钟、秒表就是计算 器的典型应用实例。
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
计数器工作原理
当时钟上升沿到来时,就执行一次累加1 (Q1<=Q1+1)的操作;否 则,Q1保持上一次的值不变,从而实现了输出值从0000到1111的计数。
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
设计实现代码(1)
【例3-5】边沿触发D触发器设计
module DFF1 (CLK,D,Q); input CLK,D; output Q; reg Q; always @ ( posedge Q<=D; endmodule
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
计数器实现代码
【例3-9】4位二进制加法计数器设计 module counter_4b (CLK,Q); // 4位二进制加法计数器 input CLK; output [3:0] Q; reg [3:0] Q1; //定义内部4位寄存节点 assign Q=Q1; //将Q1数据向端口Q输出 always @(posedge CLK ) begin Q1<=Q1+1; //CLK上升沿到来时,Q1累加1,否则保持不变 end endmodule
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
【例3-10】1位十进制计数器设计
module counter_10(CLK,RST,EN,LOAD,DATA,COUT,Q); input CLK,RST,EN,LOAD; //各个输入信号 input [3:0] DATA; //预置数输入 output [3:0] Q; //计数值输出0~9 output COUT; //进位信号 reg [3:0]Q1; //定义内部4位寄存节点 reg COUT; assign Q=Q1; //将Q1数据向端口Q输出
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
一、D触发器设计原理
功能特征是当时钟上升沿有效时,将D输 入端信号传输给Q输出端输出,当时钟信号处于 其他状态时,Q输出端的值保持不变。
明德 博学 求实 创新
设计实现代码(3)
4. 异步时序电路设计 【例3-8】 module AMOD (CLK,A,D,Q input CLK,A,D; output Q; reg Q,Q1; always @( posedge CLK ) begin Q1<=~ (A | Q); end always @( posedge Q1 ) begin Q <= D; end endmodule
果在某一个过程中,需要构成多触发时序电路,也只能产生对应某个单
一时钟的同步时序逻辑。而异步时序逻辑电路的设计则必须采用多个时 钟进程语句来构成。
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
X √
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
不完整条件语句:
在条件语句中没有把所有可能的条件对应的操作表达出来,只列出了 部分条件,而没有讨论当不满足条件时,该如何操作。
always @ (CLK
or D)
电平敏感型变量都不能放置在敏感信号列表中,从而导致在该过程语句内
部的所有未能进入敏感信号列表的变量都必须是相对于时钟同步的。所以, 如果希望在同一个模块中含有独立于主时钟的时序或组合逻辑,则必须用另
一个过程来描述。
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
升沿敏感的表述,或表示CLK上升沿到来的敏感时刻。此处表示当输入
信号CLK出现一个上升沿时,敏感信号“posedge
程语句的执行。
CLK”将启动过
明德 博学 求实 创新
四 川 工 商 学 院
Sichuan Technology and Business University
《EDA技术与SOPC基础》
明德 博学 求实 创新
//过程1,CLK为时钟敏感信号
//过程2,中间变量Q1为敏感时钟
四 川 工 商 学 院
Sichuan Technology and Business University
相关主题