版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字电路与逻辑设计二、常用时序逻辑电路设计(1)触发器设计(D、JK)(2)计数器设计(分频器)(3)移位寄存器设计(4)状态机设计:序列检测器
Process的物理意义Process进程
由敏感信号触发,并以Process结束为时间分界点,实现信号的初态到次态的转换。分界点以前引用信号的当前值(初态值),并通过赋值语句指定信号的次态值;分界点以后,次态值生效。时序电路VHDL描述方法状态方程法
确定敏感信号,用信号初态值和其他输入表示出次态值,然后代入赋值语句。状态表法确定敏感信号,按一定规则列出状态转换表,逐行描述或多行概括描述。(1)触发器设计DQCLKCLKDQn+1无变化XQn0->1000->111D触发器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdffISPORT(clk,d:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDdff;ARCHITECTUREaOFdffISBEGINprocess(clk)beginif(clk'eventandclk='1')thenq<=d;endif;endprocess;ENDa;状态方程:
J-K触发器特性表JKQn+1功能说明00011011Qn01Qn不变置0置1翻转JK触发器cpCLKI.依据状态方程实现JK触发器Libraryieee;USEieee.std_logic_unsigned.ALL;USEieee.std_logic_arith.ALL;entityjkjkisport(j,k,clk:instd_logic;Q,nQ:bufferstd_logic);endjkjk;buffer端口模式:端口既作为实体的输出,又回到实体内部做驱动信号。architecturebhofjkjkisbegin
process(clk)
begin
if(clk'eventandclk='0')thenQ<=(jand(notQ))OR((notk)andQ);nQ<=not((jand(notq))OR((notk)andq));
endif;
end
process;endbh;II.依据状态转换表实现JK触发器Libraryieee;USEieee.std_logic_unsigned.ALL;USEieee.std_logic_arith.ALL;entityjkjkisport(j,k,clk:instd_logic;Q,nQ:bufferstd_logic);endjkjk;architecturebh2ofjkjk1isbegin
process(clk)
begin
if(clk'eventandclk='0')then
ifj='0'andk='1'thenq<='0';nq<='1';
elsifj='1'andk='0'thenq<='1';nq<='0';
elsifj='0'andk='0'thenq<=q;nq<=nq;
elsifj='1'andk='1'thenq<=notq;nq<=notnq;
endif;
endif;
endprocess;endbh2;(2)-A简单计数器设计计数器CLKQ3Q2Q1Q0四位加计数器LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;USEieee.std_logic_arith.ALL;ENTITYcounterISPORT(clk:inSTD_LOGIC;q:buffer
STD_LOGIC_vector(3downto0));ENDcounter;ARCHITECTUREaOFcounterISBEGIN
process(clk)
begin
if(clk'eventandclk='1')thenq<=q+1;
endif;
endprocess;ENDa;四位加计数器计数器CLKCLR(2)-B带同步清零、同步置数功能的计数器LDQ3Q2Q1Q0D3D2D1D0控制信号CLR、LD:具有更高优先级LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;USEieee.std_logic_arith.ALL;ENTITYcounterISPORT(clk,clr,ld:inSTD_LOGIC;d:inSTD_LOGIC_vector(3downto0);q:bufferSTD_LOGIC_vector(3downto0));ENDcounter;ARCHITECTUREaOFcounterISBEGIN
process(clk)
begin
if(clk'eventandclk='1')thenif(clr='1')then
q<="0000";elsif(ld='1')thenq<=d;
elseq<=q+1;
endif;endif;endprocess;ENDa;计数器CLKCLR(2)-C带异步清零、同步置数功能的计数器LDQ3Q2Q1Q0D3D2D1D0LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;USEieee.std_logic_arith.ALL;ENTITYcounterISPORT(clk,clr,ld:inSTD_LOGIC;d:inSTD_LOGIC_vector(3downto0);q:bufferSTD_LOGIC_vector(3downto0));ENDcounter;ARCHITECTUREaOFcounterISBEGIN
process(clk,clr)begin
if(clr=‘1’)thenq<=“0000”;
elsif(clk'eventandclk='1'andld=‘1’)
then
q<=d;elsif(clk'eventandclk='1'andld=‘0’)
then
q<=q+1;endif;
endprocess;ENDa;process(clk,clr)begin
if(clr=‘1’)thenq<=“0000”;
else--即clr=‘0’
if(clk'eventandclk='1')
thenif(ld='1')then
q<=d;
elseq<=q+1;
endif;
endif;endif;
endprocess;ENDa;(2)-D带进位计数器设计计数器CLKQ3Q2Q1Q0四位加计数器COUTLIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;USEieee.std_logic_arith.ALL;ENTITYcounterISPORT(clk:inSTD_LOGIC;q:buffer
STD_LOGIC_vector(3downto0);cout:outstd_logic);ENDcounter;ARCHITECTUREaOFcounterISBEGINARCHITECTUREbOFcounterISBEGINprocess(clk)begin
if(clk'eventandclk='1')thenq<=q+1;
endif;endprocess;cout<=‘1’whenq=15else‘0’;ENDb;进程设计状态转换并列语句实现输出计数器CLKQ3Q2Q1Q0带进位的十进制加计数器COUTARCHITECTUREbOFcounterISBEGINprocess(clk)begin
if(clk'eventandclk='1')then
if(q<9)thenq<=q+1;
elsif
q>=9q<=“0000”;
endif;
endif;endprocess;cout<=‘1’whenq=9else‘0’;ENDb;进程设计状态转换并列语句实现输出(2)-E分频器Tclk=1usTcout=10us计数器就是对时钟脉冲计数,同时计数器还是一个分频器。fclk=1x106Hzfcout=1x105Hz(3)移位寄存器设计4位右移移位寄存器Reset:异步清零右移移位寄存器dinresetclkQAQBQCQDlibraryieee;useieee.std_logic_1164.all;ENTITYshifterISPORT(
din:instd_logic;reset,clk:instd_logic;QA,QB,QC,QD:bufferstd_logic);
ENDshifter;ARCHITECTUREbehaveOFshifterISBEGINProcess(reset,clk)Begin
if(reset='1')
then
QA<='0';QB<='0';QC<='0';QD<='0';
else
if
(clk'Eventandclk='1')then
QA<=din;QB<=QA;QC<=QB;QD<=QC;
endif;
endif;endprocess;Endbehave;(4)“状态机”概念及设计
我们可以用输入信号X和电路状态Q来描述时序电路的逻辑功能,这时时序电路称为
状态机(StateMachine)。根据输出信号和输入信号以及电路状态的关系,状态机可以分为两种:穆尔(Moore)型和米利(Mealy)型。Y=F[X,Q]
Y=F[Q]
米利(Mealy)型:穆尔(Moore)型:典型状态机示例—序列信号检测器目标序列信号:“110”序列检测器CLKZdin序列信号检测器工作波形图S0S20/01/0S11/00/10/01/0Mealy型序列信号检测器—状态图序列信号:110Sdin/Z‘1’‘11’S0/0S2/001S1/0101Moore型序列信号检测器—状态图序列信号:110S/Zdin‘1’‘11’S3/1‘110’001LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYsqsISPORT(din,clk:inStd_logic;z:outStd_logic);ENDsqs;Mealy型-VHDL代码转换ARCHITECTUREaOF
sqsISTYPESTATE_TYPEIS(s0,s1,s2);SIGNALstate:STATE_TYPE;BEGIN
Mealy型-VHDL代码转换PROCESS(clk) BEGIN
If
(clk’EVENTANDclk=‘1’)thenCASEstateIS
WHENs0=>IFdin=‘1’
THENstate<=s1;
elsestate<=s0; ENDIF;
WHENs1=>IFdin=‘1'THENstate<=s2;
elsestate<=s0; ENDIF;
WHENs2=>IFdin='0'THENstate<=s0;
elsestate<=s2; ENDIF;
WHENothers=> state<=s0; ENDCASE;Endif;
ENDPROCESS;z<='1'when(state=s2anddin=’0’)else'0';
--输出不仅与状态有关,而且和输入有关。ENDa;
Mealy型-VHDL代码转换序列信号:110序列检测器CLKZdinRst状态机自启动:RST复位控制LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYsqsISPORT(Rst,din,clk:inStd_logic;z:outStd_logic);ENDsqs;ARCHITECTUREaOFsqsISTYPESTATE_TYPEIS(s0,s1,s2);SIGNALstate:STATE_TYPE;BEGIN
PROCESS(rst,clk) BEGINIf(Rst=‘1’)thenstate<=s0;elsif
(clk‘EVENTANDclk=’1‘)thenCASEstateIS
WHENs0=>IFdin=‘1’
THENstate<=s1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新服务顾问年度工作计划
- 食品安全工作总结42
- 室内装修设计合同范本4
- 2024厂房转让合同协议书
- 新大学生暑期从化三下乡社会实践个人工作总结
- 2024年幼儿园中班班务上学期期末工作总结
- 施工质量监督管理安全生产培训
- 贵州城市职业学院《西医外科学医学免疫学与病原生物学》2023-2024学年第一学期期末试卷
- 贵州财经大学《藏族文化概论》2023-2024学年第一学期期末试卷
- 2025青海省安全员-B证考试题库附答案
- 工程力学课后习题答案1
- 6S视觉管理之定置划线颜色管理及标准样式
- 四年级数学(除数是两位数)计算题专项练习及答案
- 中考字音字形练习题(含答案)-字音字形专项训练
- 社区矫正个别教育记录内容范文
- 常见妇科三大恶性肿瘤的流行及疾病负担研究现状
- CTD申报资料撰写模板:模块三之3.2.S.4原料药的质量控制
- (正式版)JTT 1482-2023 道路运输安全监督检查规范
- 围手术期血糖的管理
- 2024年度医疗器械监督管理条例培训课件
- 100以内不进位不退位加减法练习题
评论
0/150
提交评论