主从JK触发器设计同步计数器.docx
《主从JK触发器设计同步计数器.docx》由会员分享,可在线阅读,更多相关《主从JK触发器设计同步计数器.docx(12页珍藏版)》请在冰豆网上搜索。
![主从JK触发器设计同步计数器.docx](https://file1.bdocx.com/fileroot1/2023-8/4/707b6049-390f-47da-b67a-49235a924542/707b6049-390f-47da-b67a-49235a9245421.gif)
主从JK触发器设计同步计数器
文档编号:
WX_HW_0003
文档分类:
硬件技术文档
(A
A.硬件设计技术文档
主从JK触发器设计同步计数器方案
Version1.1
版本信息
版本
日期
描述
作者
V1.1
2011-10-31
用主从JK触发器设计同步计数器
王肖(04096070)
张紫阳(04096055)
目录
目录3
1.概述4
2.总体描述4
2.1.功能描述4
2.2.顶层框图4
2.3.引脚描述4
2.4.接口时序5
3.模块划分6
3.1概述(叙述一下划分的几个大的模块)6
3.2模块A6
3.2.1功能定义6
3.2.2信号描述6
3.2.3时序描述(包含必要的时序图以及文字说明)6
3.2.3祥细设计7
3.3模块B8
3.4模块C8
……8
4.模块分述(设计比较复杂的时候,根据需要对模块进行细化说明,需要加上模块分述这一部分。
)8
4.1模块A9
4.1.1.模块A_1(这部分的内容与模块化分中模块的说明相同)9
4.2.2模块A_29
4.2模块B9
4.3模块C9
5.验证方案9
6.测试方案9
7.设计开发环境9
8.设计开发计划9
1.概述
本设计采用主从JK触发器设计同步计数器。
2.总体描述
主从JK触发器由一个钟控D_FF和一个钟控T_FF组成,利用主从JK触发器实现一个同步计数器。
2.1.功能描述
本设计清零信号clear低电平有效,输入数据在时钟信号clock的上升沿被锁存,触发器在clock的下降沿输出,当count_enable信号为低电平时停止计数。
2.顶层框图
图2.1计数器顶层框图
2.3.引脚描述
表2.1顶层接口信号描述
名称
输入/输出
功能描述
clk
输入
50MHz的晶振时钟信号,50%的占空比.
clear
输入
低电平有效的清零信号,输入数据在时钟信号clock的上升沿被锁存。
Q
输出
触发器在clock的下降沿输出,当count_enable信号为高电平开始计数。
2.4.接口时序
清零信号clear低电平有效,输入数据在时钟信号clock的上升沿被锁存,触发器在clock的下降沿输出,当count_enable信号为高电平时计数器计数,Q自动加1。
具体时序关系如图2.1所示
图2.2计数器接口时序图
3.模块划分
本设计分为三个模块。
A:
顶层模块
B:
D_FF模块
.C:
T_FF模块
3.1概述(叙述一下划分的几个大的模块)
3.2模块A
modulecounter(Q,clock,clear);
//I/Oports
output[3:
0]Q;
inputclock,clear;
//InstantiatetheTflipflops
T_fftff0(Q[0],clock,clear);
T_fftff1(Q[1],Q[0],clear);
T_fftff2(Q[2],Q[1],clear);
T_fftff3(Q[3],Q[2],clear);
endmodule
3.2.1功能定义
本模块采用主从JK触发器设计一个同步计数器。
3.2.2信号描述
名称
输入/输出
功能描述
clk
输入
50MHz的晶振时钟信号,50%的占空比.
clear
输入
低电平有效的清零信号,输入数据在时钟信号clock的上升沿被锁存。
d
输入
指示进行数据载入,高有效。
时钟上升沿采样。
qbar
输出
执行载入操作时,载入的数据。
时钟上升沿采样。
q
输出
Q
输出
触发器在clock的下降沿输出,当count_enable信号为高电平开始计数。
表3.1模块A信号描述
3.2.3时序描述(包含必要的时序图以及文字说明)
图3.1计数器的序图
3.2.3祥细设计
3.1计数器详细结构
.3.3模块B
moduleedge_dff(q,qbar,d,clk,clear);
//Inputsandoutputs
outputq,qbar;
inputd,clk,clear;
//Internalvariables
wires,sbar,r,rbar,cbar;
//Dataflowstatements
//Createacomplementofsignalclear
assigncbar=~clear;
//Inputlatches
assignsbar=~(rbar&s),
s=~(sbar&cbar&~clk),
r=~(rbar&~clk&s),
rbar=~(r&cbar&d);
//Outputlatch
assignq=~(s&qbar),
qbar=~(q&r&cbar);
endmodule
//EdgetriggeredT-flipflop.Toggleseveryclock
//cycle.
3.4模块C
moduleT_ff(q,clk,clear);
//I/Oports
outputq;
inputclk,clear;
//InstantiatetheedgetriggeredDFF
//Complementofoutputqisfedback.
//Noticeqbarnotneeded.Emptyport.
edge_dffff1(q,,~q,clk,clear);
endmodule
//Ripplecounter
4.模块分述(设计比较复杂的时候,根据需要对模块进行细化说明,需要加上模块分述这一部分。
)
4.1模块A
4.2模块B
4.3模块C
.4.4模块D
5.验证方案
给出对于整个设计的验证方法,详见《xxxx总体仿真验证方案》。
源程序:
//EdgetriggeredDflipflop
moduleedge_dff(q,qbar,d,clk,clear);
//Inputsandoutputs
outputq,qbar;
inputd,clk,clear;
//Internalvariables
wires,sbar,r,rbar,cbar;
//Dataflowstatements
//Createacomplementofsignalclear
assigncbar=~clear;
//Inputlatches
assignsbar=~(rbar&s),
s=~(sbar&cbar&~clk),
r=~(rbar&~clk&s),
rbar=~(r&cbar&d);
//Outputlatch
assignq=~(s&qbar),
qbar=~(q&r&cbar);
endmodule
//EdgetriggeredT-flipflop.Toggleseveryclock
//cycle.
moduleT_ff(q,clk,clear);
//I/Oports
outputq;
inputclk,clear;
//InstantiatetheedgetriggeredDFF
//Complementofoutputqisfedback.
//Noticeqbarnotneeded.Emptyport.
edge_dffff1(q,,~q,clk,clear);
endmodule
//Ripplecounter
modulecounter(Q,clock,clear);
//I/Oports
output[3:
0]Q;
inputclock,clear;
//InstantiatetheTflipflops
T_fftff0(Q[0],clock,clear);
T_fftff1(Q[1],Q[0],clear);
T_fftff2(Q[2],Q[1],clear);
T_fftff3(Q[3],Q[2],clear);
endmodule
//Toplevelstimulusmodule
modulestimulus;
//Declarevariablesforstimulatinginput
regCLOCK,CLEAR;
wire[3:
0]Q;
initial
$monitor($time,"CountQ=%bClear=%b",Q[3:
0],CLEAR);
initial
$gr_waves("clk",CLOCK,
"Clear",CLEAR,
"Q",Q[3:
0],
"Q0",Q[0],
"Q1",Q[1],
"Q2",Q[2],
"Q3",Q[3]);
//Instantiatethedesignblockcounter
counterc1(Q,CLOCK,CLEAR);
//StimulatetheClearSignal
initial
begin
CLEAR=1'b1;
#34CLEAR=1'b0;
#200CLEAR=1'b1;
#50CLEAR=1'b0;
end
//Setuptheclocktotoggleevery10timeunits
initial
begin
CLOCK=1'b0;
forever#10CLOCK=~CLOCK;
end
//Finishthesimulationattime200
initial
begin
#400$finish;
end
endmodule
仿真图:
6.测试方案
(这个只对整个完整的电路功能的测试需要给出测试方案,对于模块设计不需要给出测试方案。
)
采用FPGA进行硬件测试。
使用Xilinx的ISE进行综合。
开发板采用Xilinx的ML403,FPGA型号为Virtex-4XC4VFX12。
详见《xxxx总体测试方案》。
7.设计开发环境
综合工具:
XilinxISE10.1
FPGA设计和仿真工具:
Modelsim,ActiveHDL8.1
8.设计开发计划
序号
时间
工作内容
说明
1
10-30
指定技术规范
2
10-30
按照技术规范,编写制定总体设计方案。
3
10-30
总体功能仿真。
4
10-31
时序仿真以及后期工作。