《数字电路与逻辑设计》全套教学课件_第1页
《数字电路与逻辑设计》全套教学课件_第2页
《数字电路与逻辑设计》全套教学课件_第3页
《数字电路与逻辑设计》全套教学课件_第4页
《数字电路与逻辑设计》全套教学课件_第5页
已阅读5页,还剩496页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

片上微控制系统原理与项目设计第一讲数电1-数字化处理基础数电2-逻辑门与逻辑电路描述数电3-逻辑电路结构与硬件描述数电4-组合逻辑电路数电5-组合逻辑电路数电6-组合逻辑电路数电7-时序逻辑电路数电8-时序逻辑电路(2)数电9-时序逻辑电路(3)数电10-时序逻辑电路(4)数电11-数字系统设计-滤波器设计数电12-数字系统设计-简易处理器设计数电13-数字系统设计-优化数电14-片上系统数电15-片上系统-存储器数电16-片上系统-总线全套可编辑PPT课件课程介绍片上微控制系统原理(占总成绩67%)40%期末考试20%平时作业及线上测试40%实验项目设计(占总成绩33%)数字电路的应用数字电路广泛应用于各种产品和系统中,提供计算、控制、通信等功能。作业:查找资料,汇总国产CPU、DSP、GPU、MCU厂商及产品名称。谈谈你对国产行业发展的看法。(200字)数字电路与AI数字电路为AI提供了必要的硬件基础,使得复杂的算法和数据处理任务得以在实际物理设备上实现。AI和机器学习(ML)算法需要大量的计算资源。数字电路,尤其是中央处理单元(CPU)、图形处理单元(GPU)、专用集成电路(ASIC)、以及现场可编程门阵列(FPGA),提供了执行这些算法所需的高速计算能力。作业:查找资料,简述AI领域使用到的数字电路。谈谈你对AI发展的看法。(各200字)信息处理系统信息处理系统信息获取信息加工信息显示信息存储信息传输信息处理系统定出入数字处理系统数值电路数值通常用电平来表示实现R进制数的电路称为R进制电路R进制电路中需要R个不同电平。二进制电路高电平和低电平N位二进制数需要N根导线传输电路的每根导线代表一位数字信号采用高低电平表示的二进制数从外部所要获取和输出至外部的信号通常为模拟信号采用专用电路进行模拟信号与数字信号之间的转换知信号digitalsignalWhatDoes“Digital”Mean?AnalogsignalInfinitepossiblevaluesEx:voltageonawirecreatedbymicrophonevaluetimeanalogsignal3421DigitalsignalFinitepossiblevaluesEx:buttonpressedonakeypad01234valuetimePossiblevalues:1.00,1.01,2.0000009,...infinitepossibilitiesPossiblevalues:0,1,2,3,or4.That’sit.0123411ExampleofDigitizationBenefitAnalogsignal(e.g.,audio,video)maylosequalityVoltagelevelsnotsaved/copied/transmittedperfectlyDigitizedversionenablesnear-perfectsave/cpy/tran.“Sample”voltageatparticularrate,savesampleusingbitencodingVoltagelevelsstillnotkeptperfectlyButwecandistinguish0sfrom1stimeVolts0123originalsignallengthytransmission(e.g,cellphone)time0123receivedsignalHowfix--higher,lower,?lengthytransmission(e.g,cellphone)0110111011same0110111011Voltsdigitizedsignaltime01a2dVolts0123d2aLetbitencodingbe:1V:“01”2V:“10”3V:“11”timeCanfix—easilydistinguish0s/1s,restore01Buthighersamplingrateandmorebitsperencodingimprovesre-creation(orbringscloser)aDigitizedsignalnotaperfectre-creationduetoa2dandd2aSomeinputsinherentlybinaryButton:notpressed(0),pressed(1)SomeinputsinherentlydigitalJustneedencodinginbinarye.g.,multi-buttoninput:encodered=001,blue=010,...SomeinputsanalogNeedanalog-to-digitalconversionAsdoneinearlierslide:

sampleandencodewithbits0button1greenblackbluered000red010greenblackblue100greenblackblueredtemperaturesensorair0011000033degreessensorsandotherinputsDigitalSystemactuatorsandotheroutputsA2DD2AanalogphenomenaelectricsignaldigitaldatadigitaldataelectricsignaldigitaldatadigitaldatatimeVolts0123originalsignal01101110110110111011Voltsdigitizedsignaltime01a2d数字处理系统信息获取采用模数转换器(相当于人的眼睛)将模拟电压转化为数值输入数据信息显示采用数模转换器(相当于人的手)将控制数值变为相应大小的电流,从而实现对阀门的开启控制信息加工采用数字电路(相当于人的大脑)对输入数据进行存储、比较、运算等操作,计算出控制数值,产生输出数据明系统运算与逻辑数字信息处理的输入和输出均是二进制数都是由0和1构成n位输入X=(Xn-1,…,X0)Xi只能取0或1m位输出为Y=(Ym-1,…,Y0)Yi只能取0或1处理采用函数F来描述Y=F(X)输出Y的任何一位Yi都可以看成是所有输入的函数Yi=Fi(Xn-1,…,X0)反映了因变量Yi与自变量Xn-1,…,X0之间的关系由多位0或1产生一位0或1Xn-1X1X0Ym-1Y1Y00…000…010…011…110…100…00⁞⁞1…110…10懂模型运算与逻辑二进制数加法(Y1,Y0)=X1+X0X1和X0是一位加数Y1和Y0的组合值为和Y1称为进位,Y0称为本位和Y1和Y0分别看成X1和X0的函数Y1=F1(X1,X0)Y0=F0(X1,X0)逻辑函数体现了二值输入与输出之间的因果关系自变量称为逻辑输入因变量称为逻辑输出所有输入和输出只能取两个值二值逻辑二值输入与二值输出之间的关系X1X0Y1Y00000010110011110布尔逻辑

运算公式非¬真=假¬假=真与假˄假=假假˄真=假真˄假=假真˄真=真或假˅假=假假˅真=真真˅假=真真˅真=真运算公式非与或运算公式异或同或会逻辑运算与逻辑二进制数加法(Y1,Y0)=X1+X0Y1=F1(X1,X0)=X1

X0Y0=F0(X1,X0)=X1

X0X1X0Y1Y00000010110011110逻辑的电路实现逻辑函数的输入和输出都可以采用高低电平来表示高电平为逻辑1态,低电平为逻辑0态逻辑运算利用输入的电平来控制开关闭合或断开,从而产生相应的电平输出一个输入控制一个开关多个输入的逻辑运算采用多个开关的串联和并联相结合的混合电路逻辑门用以实现基本逻辑运算和复合逻辑运算的单元电路开关电路开关构成的电路与逻辑运算之间的关系闭合和5V电位

逻辑1断开和0V电位

逻辑0ABFABFABFABF(a)0-11-0

(b)000010100111(c)000011101111非运算与运算或运算继电器电路会分析半导体电路半导体载流子带负电的自由电子带正电的空穴N型半导体自由电子浓度远大于空穴浓度多子是自由电子P型半导体空穴浓度远大于自由电子浓度多子是空穴PN结一块半导体单晶上一侧掺杂成P型半导体,另一侧掺杂成N型半导体单向导电性P端电压比N端电压高,正偏,PN结导通P端电压比N端电压低,反偏,PN结截止半导体电路二极管三极管|Ub-Ue|大于某值时,c极和e极之间导通,相当于短路,否则c和e两极之间不导通,相当于断路。基射极正向偏压(Ub>Ue)基射极反向偏压(Ub<Ue)半导体逻辑电路场效应管单极性三极管MOS管绝缘栅场效应管栅源反向偏压导通栅源正向偏压导通能设计MOS逻辑电路

1001MOS逻辑电路

110101101001MOS逻辑电路

100010111000MOS逻辑电路三态门T3和T4构成非门当EN为1时,nEN为0A为1,则T2导通使B为1,否则T1导通使B为0,故B=A当EN为0时,nEN为1,无论A为何电平,T1和T2都截止,B处于悬空状态高阻状态101100101数字集成电路将元器件和连线集成于同一半导体芯片上而制成的数字逻辑电路SSI基本逻辑运算单元MSI基本逻辑门构建具有一定功能的逻辑电路LSI/VLSI存储器、微处理器、可编程逻辑器件类型

规模门电路数元器件数小规模集成电路1~101~10中规模集成电路10~100100~1000大规模集成电路100~100001000~100000超大规模集成电路10000~100000100000~1000000特大规模集成电路100000~1000000~本节小结作业1.作业:查找资料,汇总国产CPU、DSP、GPU、MCU厂商及产品名称。谈谈你对国产行业发展的看法。(200字)2.作业:查找资料,简述AI领域使用到的数字技术。谈谈你对AI发展的看法。(各200字)3.用最少的MOS管构建以下运算电路与运算或运算异或运算与非运算三态输出逻辑门与逻辑函数

片上微控制系统原理与项目设计第二讲TheCMOSTransistorCMOStransistor(ASignificantInvention)BasicswitchinmodernICsEnablingustodaytodothingslikeseetheworldonTV,surftheweb,andtalkoncellphones.TwotypesofCMOStransistornMOSandpMOSdoesnotconduct0conducts1gatenMOSdoesnotconduct1gatepMOSconducts0anMOStransistorsymbolconductswhengate=1pMOStransistorsymbolconductswhengate=0TheCMOSTransistor(Cont.)AnanalogyThecurrenttryingtocrossthechannelApersontryingtocrossariverMOSMOStransistorsusemetal(toconnecttransistors),oxide(toinsulate),andsemiconductormaterial.练习:用继电器实现与非门NandGame-Buildacomputerfromscratch.实验1NAND本节课内容课程讲授思路布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学逻辑真值表由逻辑输入和逻辑输出的值组成的表格采用一个表格将逻辑输入的所有取值组合按组合值顺序排成若干行将每个组合产生的逻辑输出值也列出同一行中逻辑真值表

输入输出ABF001010101111逻辑真值表

输入输出ABF1F20010011110111100逻辑真值表某变量的逻辑非称为反变量该变量称为原变量原变量反变量真值表将输入原变量及其反变量作为新的输入将输出原变量及其反变量作为新的输出重新构建真值表探究如何从真值表中获得逻辑函数表达式输入输出ABF001110011001100110110010逻辑真值表输出1分析每一行都有三个1两个为输入量为1一个为输出量为1值为1的输出量是两个为1的输入量的与运算结果输入输出ABF001110011001100110110010

①每个值为1的输出都可以由值为1的输入原变量或反变量进行与运算获得。通常把单个逻辑变量(或反变量)进行与运算构成的项称为与项。②只要输入的值使某一与项结果为1,输出值就为1,输出是这些与项的或运算。通常把由与项相或构成的表达式称为与或式。③分析输出原变量或反变量都可以得到相同的逻辑函数表达式。

输入输出ABF001110011001100110110010逻辑真值表输出0分析每一行都有三个0两个为输入量为0一个为输出量为0值为0的输出量是两个为0的输入量的或运算结果

①每个值为0的输出都可以由值为0的输入原变量或反变量进行或运算获得。通常把单个逻辑变量(或反变量)进行或运算构成的项称为或项。②只要输入的值使某一或项结果为0,输出值就为0,输出是这些或项的与运算。通常把由或项相与构成的表达式称为或与式。③分析输出原变量或反变量都可以得到相同的逻辑函数表达式。

课程讲授思路布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学基本逻辑门与门实现与运算的电路称为与门(AND)。只有所有输入都成立,输出才成立只要有一个输入不成立,输出就不成立两个输入分别为A和B,输出为F与运算代数表达式为F=A·B基本逻辑门与门某大门门禁闸机有证件读卡器和摄像头,通过系统进行证件认证和人脸识别。控制器的功能只有人脸识别成功且证件认证成功,闸机门才打开,否则闸机门保持关闭。控制器设计人脸识别成功时A为1,失败时A为0证件认证成功时B为1,失败时B为0F为1表示打开,为0时表示关闭F=A·B基本逻辑门或门实现或运算的电路称为或门(OR)只要有一个输入成立,输出就成立只有所有输入都不成立,输出才不成立两个输入分别为A和B,输出为F或运算代数表达式为F=A+B基本逻辑门或门某大门门禁闸机有证件读卡器和摄像头,通过系统进行证件认证和人脸识别。控制器的功能只要人脸识别成功或证件认证成功,闸机门就打开,否则闸机门保持关闭。控制器设计人脸识别成功时A为1,失败时A为0证件认证成功时B为1,失败时B为0F为1表示打开,为0时表示关闭F=A+B基本逻辑门

节能台灯当外部亮度超过规定强度时断开台灯电路,否则接通台灯光强检测结果为A,光强足够大时A为1,否则A为0开关控制输出为F,1表示打开,0时表示关闭复合逻辑门

与非门可以实现一切数字电路NandGame-Buildacomputerfromscratch.INVANDOR复合逻辑门

复合逻辑门与或非门实现与或非运算的电路称为与或非门

复合逻辑门

课程讲授思路布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学变换化简优化逻辑函数常用形式逻辑函数与、或、非与或式或与式与非-与非式或非-或非式与或非式或与非式完备集相互转换逻辑函数常用形式

逻辑函数常用形式四个端口A、B、C、DD不可能是输出A=B=C=0时,D有0和1两种取值A不可能是输出B=C=D=1时,A有0和1两种取值C不可能是输出A=B=D=1时,C有0和1两种取值A、C和D为输入,B为输出A01010110B00111100C00101110D00110101逻辑函数常用形式

ACDBACDB00001000001010110101110001111111A01010110B00111100C00101110D00110101逻辑函数标准形式与项单个逻辑变量(或反变量)进行与运算构成的项最小项n个变量的最小项是n个变量的“与项”每个变量都以原变量或反变量的形式出现一次共有2n个最小项采用符号mi表示下标i是最小项的编号对应变量取值的等效十进制数iABC与项最小项0000m01001m12010m23011m34100m45101m56110m67111m7iAB与项最小项000m0101m1210m2311m3逻辑函数标准形式

序号ABCm0m1m2m3m4m5m6m7000010000000100101000000201000100000301100010000410000001000510100000100611000000010711100000001逻辑函数标准形式与或式由“与项”相或构成的表达式最小项表达式所有与项均为最小项的与或表达式标准与或式F(A,B,C)=AB̅C+AB̅C̅+ABC̅F(A,B,C)=m4+m5+m6=Σm(4,5,6)任何一个逻辑函数都可以表示为最小项之和的形式将真值表中使函数值为1的各个最小项相或最小项表达式是唯一的最小项表达式示例函数F的最小项表达式F=A̅B̅C+A̅BC̅+AB̅C̅+ABC=Σm(1,2,4,7)函数F的最小项表达式F=A̅C+BC̅+AB̅F=Σm(1,2,3,4,5,6)ABCFABCF00001001001110100101110001101111ABCFABCF00001001001110110101110101111110最小项表达式示例ABCDABCD00011001001010100101110001111110D=Σm(0,2,3,4)

ABCFABCF00001001001010110100110001111111F=Σm(3,4,5,7)最小项表达式示例手机来电控制振动模式有电话呼入时发生振动而无响铃振铃模式有电话呼入时发生响铃而无振动输入输出ABYZ0000010010011110电路输入A:是否有电话呼入1-是,0-否B:是否置振动模式1-是,0-否电路输出Y:是否振动1-是,0-否Z:是否响铃1-是,0-否

逻辑函数标准形式或项单个逻辑变量(或反变量)进行或运算构成的项最大项n个变量的最大项是n个变量的“或项”每一个变量都以原变量或反变量的形式出现一次n个变量可以构成2n个最大项只有一组变量取值使它为0,而变量的其余取值均使它为1符号Mi表示iABC或项最大项0000M01001M12010M23011M34100M45101M56110M67111M7逻辑函数标准形式最大项n变量的全部最大项的逻辑乘恒为0,即∏Mi=0n变量的任意两个不同的最大项的逻辑和必等于1,即Mi+Mj=1(i≠j)。n变量的每个最大项有n个相邻项或与式由“或项”相与构成的表达式最大项表达式所有的或项均为最大项的或与式标准或与式ABCFABCF00001001001110100101110001101111F=(A+B+C)(A+B̅+C̅)(A̅+B+C̅)(A̅+B̅+C)=∏M(0,3,5,6)逻辑真值表

输入输出ABCF00000010010001111000101111011111具有无关项的逻辑函数无关项逻辑函数值不确定的输入变量的某些取值组合约束项(禁止项)输入变量的某些组合不可能出现不允许出现的最小项称为约束项(或禁止项)任意项(随意项)函数值为1或为0都可以非完全描述逻辑函数具有无关项的逻辑函数真值表中填Ø或×、d,表示为0或1均可逻辑表达式中用约束条件来表示ABCFABCF000010010010101

0101110

011

111

逻辑函数化简

名称公式1公式2合并律A

B+A

B̅=A(A+B)(A+B̅)=A吸收律①A+A

B=AA

(A+B)=A吸收律②A+A̅

B=A+BA

(A̅+B)=A

B吸收律③A

B+A̅

C+B

C=A

B+A̅

CA

A̅=0逻辑函数化简卡诺图根据最小项真值表按一定规则排列的方格图逻辑函数的K图表示任何一个n变量的逻辑函数都可以用n变量K图来表示K图是真值表的一种特殊形式n变量的K图包含了n变量的所有最小项将逻辑函数真值表中每个最小项的值填入K图中的相应方格逻辑函数化简卡诺图化简合并几何位置相邻最小项相接相对任一行或列的两头相重对折起来位置重合逻辑函数化简

作业:

1.参照课件第30页(最小项表达式示例),改变逻辑定义,重新画真值表,写表达式。

2根据课件第24页(逻辑函数常用形式)的真值表例子,画出波形图、写出最小项表达式、最大项表达式。

3.画出课件第28、29页(最小项表达式示例)中除最后一个例子外的波形图。逻辑电路结构与硬件描述

片上微控制系统原理与项目设计第三讲上节复习课程讲授思路布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学HDL硬件结构逻辑电路结构因果系统只有输入发生变化输出才可能变化两种类型组合逻辑电路(组合电路)一个电路的输入相同时输出也相同任何一时刻的稳态输出仅仅取决于该时刻的输入,而与电路原来的状态无关时序逻辑电路(时序电路)相同输入在不同时刻的输出不同表明逻辑运算与时间有关任一时刻的输出不仅与该时刻输入变量有关,而且还与过去时刻电路内部电平有关具有记忆功能输入没变化,输出不可发生变化组合电路任何一时刻的稳态输出仅仅取决于该时刻的输入与电路原来的状态无关无记忆功能数学描述X=(x1,…,xn)表示输入逻辑量Z=(z1,…,zm)表示输出逻辑量Z=F(X)表示逻辑函数F=(f1,...,fm)fi是zi与X之间的逻辑函数

组合电路示例输入为A、B、C,输出是F1、F2,试判定它们是否为组合电路输出组合电路示例通过比较相同的A、B、C组合其输出是否相同来判定是否为组合逻辑输出波形真值表A00001111000011110B00110011001100110C01010101010101010F111101100111011001F211100000110000111组合电路示例

输入输出ABCF1F2000110011101011/001100100101011011000/111100/1时序电路任一时刻的输出不仅与该时刻输入变量有关,而且还与过去时刻电路内部电平有关具有记忆功能触发器具有记忆功能的基本电路状态输出就是所要记忆的数状态转移当某输入信号发生某种特定变化时,触发器可以从一个稳定状态转换到另一个稳定态触发条件触发状态改变的条件产生状态转移的输入信号的特征高电平(值为1)、低电平(值为0)、上升沿(从低电平变为高电平的瞬间,值用

表示)、下降沿(从高电平变为低电平的瞬间,值用

表示)只有触发条件满足,状态才可能发生变化,否则状态不变,即保持操作。时序电路状态当前状态(现态)Q触发时的状态触发后的状态(次态)Qn+1电路框图存储电路采用触发器构成存储电路来保存当前内部信号供将来使用组合电路将当前输入和当前保存的过去产生的内部信号组合产生当前输出和当前内部信号时序电路信号输入X=(x1,x2,…,xn)状态Q=(q1,q2,…,qj)存储电路的状态输出组合电路的内部输入输出Z=(z1,z2,…,zm)激励Y=(y1,y2,…,yk)存储电路的激励信号组合电路的内部输出电路状态转移函数Qn+1=H(X,Q)输出函数Z=F(X,Q)激励函数Y=G(X,Q)时序电路确定输入输出及触发条件B变化时A不一定变化A变化时B一定变化A在B下降沿变化A输出,B输入B下降沿触发时序电路确定输入输出及触发条件B、C不变时A变化A、C不变时B变化A不是输出C在A或B上升沿变化A、B输入,C输出A和B上升沿触发B不是输出C变化时A或B必变化课程讲授思路布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学HDL硬件结构硬件描述语言逻辑符号基本器件逻辑运算触发器专用集成电路功能电路通过连接线将所用的逻辑符号连接在一起构成电路硬件描述语言采用专用语句以文本描述的方式构建功能电路减少对逻辑化简的过度依赖直观地利用规定的运算符来实现功能有利于大规模电路的实现逻辑符号方式直观看出逻辑关系、容易定义连接信号复杂的逻辑电路需要太多的符号及连接线描述麻烦硬件描述语言减少复杂逻辑的符号描述,便于维护设计者不易形成整体框架,不直观逻辑符号与硬件描述语言同时使用两者本质是一致的逻辑符号描述应用在模块级,用来描述整个电路的构架硬件描述语言侧重于功能级描述及系统的实现做到“电路在心中,程序在手中”避免设计过度软件化而导致电路连接关系较乱。硬件描述语言逻辑符号硬件描述语言电路描述基本单元:逻辑运算、触发器、专用集成电路功能电路:通过连接线将所用的逻辑符号连接在一起构成电路采用专用语句以文本描述优点可以直观看出逻辑关系,并非常容易定义连接信号可以减少对逻辑化简的过度依赖;可以直观地利用规定的运算符来实现功能,有利于大规模电路的实现;可以减少复杂逻辑的符号描述,并且便于维护缺点复杂的逻辑电路需要太多的符号及连接线,比较麻烦不直观,设计者不易形成整体框架应用模块级,用来描述整个电路的构架功能级描述及系统的实现电路在心中,代码在手中避免设计过度软件化而导致电路连接关系较乱VerilogHDL模块最基本设计单元模块声明由模块名称和模块输入输出端口列表组成module模块名(端口名1,端口名2,...,端口名n);endmodule端口定义输入input端口名1,端口名2,...,端口名n;输出output端口名1,端口名2,...,端口名n;双向inout端口名1,端口名2,...,端口名n;相同类型端口列表x[m],…,x[n]<类型>[m:n]xmoduletest(A,B,C,CP,F1,F2);inputA,B,C,CP;outputF1,F2;wireF1;regF2;always@(posedgeCP)F2<=F1;

assignF1=A&B|C;endmoduleVerilogHDL模块信号声明模块中所用到的所有信号都进行类型声明连续型wire只要输入有变化,输出马上无条件地反映不能作为存储电路的状态例:x是3位连线型信号wire[2:0]x;寄存器型reg一定要有触发输出才会反映输入可以作为存储电路的状态,也可以作为组合电路的输出例:y和z为一寄存器型信号,cnt为4位寄存器型信号regy,z;reg[3:0]cnt;moduletest(A,B,C,CP,F1,F2);inputA,B,C,CP;outputF1,F2;wireF1;regF2;always@(posedgeCP)F2<=F1;

assignF1=A&B|C;endmoduleVerilogHDL模块逻辑功能定义持续赋值语句assign过程赋值块always调用元件(元件例化)always语句是上升沿触发的存储电路assign语句是变量A、B、C的组合电路两条语句是同时工作的F2锁存当前A、B、C产生的F1moduletest(A,B,C,CP,F1,F2);inputA,B,C,CP;outputF1,F2;wireF1;regF2;always@(posedgeCP)F2<=F1;

assignF1=A&B|C;endmodule所有语句都是并行同时执行,与书写先后无关VerilogHDL模块模板module<顶层模块名>(<输入输出端口列表>);

/*端口声明*/output输出端口列表;//输出端口声明input输入端口列表;//输入端口声明

/*定义数据、信号类型,函数声明*/wire信号名;reg信号名;/*逻辑功能定义*/

assign<结果信号名>=<表达式>;always@(<敏感信号表达式>)begin//过程赋值end/*例化模块*/<调用模块名><例化模块名>(<端口列表>);

门元件关键字<例化门元件名>(<端口列表>);endmoduleVerilogHDL-运算量常量三种类型整数、实数和字符串4种方式来表示逻辑状态0表示逻辑0(低电平)、1表示逻辑1(高电平)、x表示不确定、z表示高阻态表示格式<位宽>'[b/d/o/h]<值>b、d、o、h分别代表为二、十、八、十六进制parameter定义一个标志符,代表一个常量parameter参数名1=表达式1,参数名2=表达式2,……;变量采用非负整数作为下标来定义,变量的位数也称为位宽reg[3:0]X;位宽为4的寄存器变量X,每位按先后顺序分别标识为X[3]、X[2]、X[1]和X[0]wire[1:4]Y;定义了位宽为4的连线型变量Y,每位按先后顺序分别标识为Y[1]、Y[2]、Y[3]和Y[4]8'hab、4'b0110、5'o17、6'd35parameterN=8,M=2;VerilogHDL-运算符运算符算术运算符+(加)、-(减)、*(乘)、/(除)、%(求模)位运算符&(按位与)、|(按位或)、~(按位非)、^(按位异或)、~^(按位同或)逻辑运算符&&(逻辑与)、||(逻辑或)、!(逻辑非)关系运算符<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、===(全等于)、!=(不等于)、!==(不全等于)缩位运算符&(与)、~&(与非)、|(或)、~|(或非)、^(异或)、~^(同或)单目运算,将运算量的各位作为逻辑量进行运算符规定的操作移位运算符<<(左移)、>>(右移)采用0进行补充。条件运算符运算符为“?:”,它是三目运算符<条件>?<表达式1>:<表达式2>若条件成立,则取表达式1的值,否则取表达式2的值。位拼接运算符运算符为“{}”将{}中的变量拼接为一个多位的变量重复拼接符为“{n{}}”重复n次后面的内容后拼接在一起优先级从高到低依次为(!、~)、(*、/、%)、(+、-)、(<<、>>)、(<、<=、>、>=)、(==、!=、===、!==)、(&、~&)、(^、~^)、(|、~|)、&&、||、?:VerilogHDL–行为语句过程语句always@(<触发条件列表>)触发条件列表也称为敏感信号表达式,触发条件写在敏感信号表达式之中,当触发条件满足时,其后的语句才能被执行触发条件列表中的多个条件之间采用“or”来连接触发条件分为两类电平敏感型边沿敏感型上升沿(由低电平变到高电平)下降沿(由高电平变到低电平)由一种类型的敏感信号来触发不要将边沿敏感型信号和电平敏感型信号列在一起always@(AorB)always@(A)//A发生改变时always@(posedgeA)//A上升沿时always@(negedgeA)//A下降沿时always@(*)//任一输入变化时VerilogHDL–赋值语句块语句begin-end赋值语句assign持续赋值用于组合逻辑的赋值always过程赋值非阻塞赋值在整个过程块结束时才完成赋值操作并行赋值操作阻塞赋值语句结束后赋值操作完成串行执行assignF=(A&B)|(~A&~C);always@(posedgecp)beginb<=c;a<=b;endalways@(posedgecp)beginb=c;a=b;end//非阻塞赋值示例modulenon_blocking_example;rega,b,c;initialbegina=0;b=0;c=0;a<=1;b<=a;c<=b;endendmodule//阻塞赋值示例moduleblocking_example;rega,b,c;initialbegina=0;b=0;c=0;a=1;b=a;c=bendendmodule//结果是:a=1,b=1,c=1//在下一个时钟边缘,结果是:a=1,b=0,c=0VerilogHDL-条件语句if–else语句①if(表达式)

语句/语句块;②if(表达式)

语句1/语句块1;else

语句2/语句块2;③if(表达式1)

语句1/语句块1;elseif(表达式2)

语句2/语句块2;︙elseif(表达式n)

语句n/语句块n;else

语句n+1/语句块n+1;case语句case、casez和casexcase(条件表达式)值1:语句1;值2:语句2;┇值n:语句n;default:语句n+1;endcase若干个值的执行语句相同,可以将这几个值采用“,”相连若为0、x和z则按“假”处理;若为1则按“真”处理case是全等比较,而对x和z值不敏感判定结果casecasexcasez01xz01xz01xz01000101110011010001110101x001011110011z000111111111VerilogHDL-组合电路采用assign采用过程赋值使用条件语句设计一定要列出所有条件分支if语句一定要加else语句case语句中值没有全列出时一定加default语句moduletest(X,Z);input[n:1]X;output[m:1]Y;reg[m:1]Y;always@(*)//输入变化时case(X) n’d0:Z<=; n’d1:Z<=;

⁝ n’dN:Z<=; default:Z<=;endcaseendmoduleVerilogHDL-组合电路输入输出ABF1F200CC01BC̅10BC̅11CC输入输出输入输出ABCF1F2ABCF1F20000010001001111010001011110000111011111moduletest(A,B,C,F1,F2);inputA,B,C;outputF1,F2;regF1,F2;always@(*)case({A,B,C})0,5,6:{F1,F2}<=2'b00;1,2,7:{F1,F2}<=2'b11;3:{F1,F2}<=2'b10;4:{F1,F2}<=2'b01;endcaseendmodulemoduletest(A,B,C,F1,F2);inputA,B,C;outputF1,F2;regF1,F2;always@(*)case({A,B})0,3:{F1,F2}<={C,C};1,2:{F1,F2}<={B,~C};endcaseendmodulemoduletest(A,B,C,D,F1,F2,F3);inputA,B,C,D;outputF1,F2,F3;assign{F1,F2,F3}=A?3'b000:B?3'b010:C?3'b100:{2'b11,~D};endmoduleVerilogHDL-组合电路moduletest(A,B,C,D,F1,F2,F3);inputA,B,C,D;outputF1,F2,F3;regF1,F2,F3;always@(*)casex({A,B,C})3'b1xx:{F1,F2,F3}<=3'b000;3'b01x:{F1,F2,F3}<=3'b010;3'b001:{F1,F2,F3}<=3'b100;3'b000:{F1,F2,F3}<={2'b11,~D};endcaseendmodule输入输出ABCDF1F2F31

00001

010001

10000011100000111moduletest(A,B,C,D,F1,F2,F3);inputA,B,C,D;outputF1,F2,F3;regF1,F2,F3;always@(*)if(A){F1,F2,F3}<=3'b000;elseif(B){F1,F2,F3}<=3'b010;elseif(C){F1,F2,F3}<=3'b100;else{F1,F2,F3}<={2'b11,~D};endmoduleVerilogHDL–仿真新建模块文件xxx.v定义模块既可以一个模块一个文件,也可以多个模块多个文件但不能出现多个相同名称的模块新建测试文件xxx_tb.v定义一个测试模块,将所用到的模块进行例化,初始化输入信号例化模块名实例名(.端口1(信号1),端口2(信号2),…,端口M(信号M));module模块名(端口1,端口2,…,端口M);┆endmoduletest(A,B,F)testu_0(.A(x),.B(y),.F(z));VerilogHDL–仿真新建测试文件xxx_tb.v例化初始化采用initial语句对输入信号的描述reg型变量赋初值不带触发条件,过程中的块语句沿时间轴只执行一次,且所赋值的信号必须是reg型延时变化采用延时语句#n来实现延时n个时间基准在always语句中采用延时来产生时钟信号时间基准及其分辨率采用timescale来声明编译源文件生成波形文件,并采用波形显示工具察看仿真波形initialbegin

语句1;

语句2;⁝endrega,b;initialbegina=0;b=1;end`timescale1ns/1psrega;initialbegina=0;#100a=1;#300a=0;#500$finish;endregclk;always#500clk=~clk;initialclk=1;信号a置0,保持100ns后变为1,再保持300ns后变为0,保持500ns后仿真结束。VerilogHDL–仿真示例新建And2.v文件moduleAnd2(A,B,F);inputA,B;outputF;assignF=A&B;endmodulemoduleAnd2(A,B,F);inputA,B;outputF;regF;always@(*)F<=A&B;endmodulemoduleAnd2(A,B,F);inputA,B;outputF;regF;always@(*)if(A==1&&B==1) F<=1;else F<=0;endmodulemoduleAnd2(A,B,F);inputA,B;outputF;regF;always@(*)case({A,B})2’b11:F<=1;default:F<=0;endcaseendmoduleVerilogHDL–仿真示例新建仿真测试文件and2_tb.v`timescale10ns/100psmoduleand2_tb;rega,b;wirec;And2and2_0(.A(a),.B(b),.F(c));initialbegina=0;b=0;#100;a=0;b=1;#100;a=1;b=0;#100;a=1;b=1;#100;$finish;

endendmodule延时100*10ns=1us延时基准为10ns初始置ab=00,保持1us后变为01保持1us后变为10保持1us后变为11保持1us后结束仿真VerilogHDL–仿真示例编译这两个文件进行功能仿真ab=00ab=01ab=10ab=11结束作业1.安装软件

2.新建工程并完成仿真(示例程序)

3.完成课件第26页、27页例子的仿真,提交波形图。4下页本章知识点图中标出你认为的难点本节小结HDLBits(01)/wiki/Main_Page本章知识点

*橙色为重点掌握

*绿色为自学组合逻辑电路

片上微控制系统原理与项目设计第四讲内容回顾布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学HDL硬件结构授课内容组合电路信息处理系统信息获取信息加工信息显示信息存储信息传输信息加工和处理算法中的数学计算、比较、选择、分配、编码和译码等重要操作电路都属于组合电路。组合电路是无反馈电路,即当前输出只与当前输入有关,相同的输入产生相同的输出。组合电路的分析分析方法从输入端开始,逐级推导出输出端的逻辑函数表达式根据逻辑函数表达式列出真值表根据真值表的内容概括出电路的功能组合电路的分析某设备的控制电路图3-1所示,分析该组合电路的逻辑功能。从输入量A、B和C开始逐级推导

ABCFABCF00001000001010110100110101111111从表中可以看出,只要有两个或两个以上的输入为1,输出就为1。因此,该电路可以视为是一种“少数服从多数”的表决器。组合电路的分析硬件描述语句,有时分析语句即可知道功能,有时要列出真值表通过观察得到功能,有时需要语句分析与列真值表相结合。【例】分析下面Verilog语言描述的逻辑电路的功能。moduletest(A,B,C,F); inputA,B,C; outputregF; wire[1:0]x; assignx=A+B+C; always@(*) if(x<2'd2) F<=1'b0; else F<=1'b1;endmodule组合电路设计设计某种功能的电路时,首先进行逻辑抽象,即将文字描述的逻辑命题转换为真值表;然后根据真值表和选用的逻辑器件类型写出相应的逻辑函数表达式。在逻辑抽象中,先分析逻辑命题,确定输入和输出变量;再采用二值逻辑的0和1分别对输入和输出进行值描述(即0和1的含义),并列出输出和输入之间的逻辑真值表。组合电路设计【例】某产品重量检测单元电路有四个输入D3D2D1D0(其组合值为输入的产品重量值)和3个输出信号FL(不足)、FM(合格)和FH(超重)。输入输出关系为:(1)仅当质量值小于5时FL=1,其它情况FL=0;(2)仅当质量值大于10时FH=1,其它情况FH=0;(3)仅当质量值不小于5且不大于10时FM=1,其它情况FM=0。设计该单元电路。组合电路设计①输入变量为D3、D2、D1和D0,输出变量为FL、FH和FM。②逻辑真值表组合电路设计

组合电路设计

组合电路设计moduletest(D,FL,FM,FH); input[3:0]D; outputregFL,FM,FH; always@(*) if(D<4'd5) {FL,FM,FH}<=3'b100; elseif(D<=4’d10) {FL,FM,FH}<=3'b010; else {FL,FM,FH}<=3'b001;endmodule【例】某比赛项目有三个裁判,每个裁判有一个表决按钮,按下按钮表明“通过”。运动员最终成绩通过是否亮灯来表示,灯亮表示“通过”,灯灭表示“未通过”。仅当两个或两个以上裁判按下按钮时,灯才亮。①输入输出定义有三个表决按钮,分别采用三个输入A、B和C来表示按钮状态,当按钮按下时,相应的变量值为0,否则为1。灯控信号采用输出F表示,F为1时灯亮,为0时灯灭

logisimmoduletest(A,B,C,F); inputA,B,C; outputregF; always@(*) case({A,B,C}) 0,1,2,4:F<=1'b0; 3,5,6,7:F<=1'b1; endcaseendmodule加/减法器1.全加器

最基本的加法器是两个比特相加的一位二进制数加法,其数学公式为(CO,S)=A+B+CI,其中A和B是两个本位加数,CI为低位向本位的进位,S为本位和,CO为本位向高位的进位。该加法器也称为全加器。问题:算术逻辑单元ALU如何设计?支持加、减、乘、除、与、或、非运算,由控制线控制全加器S=A

B

CICO=A

B+A

CI+B

CImoduleadd1(A,B,CI,S,CO); inputA,B,CI; outputS,CO; assign{CO,S}=A+B+CI;endmodule半加器没有低位进位的加法器称为半加器,即(CO,S)=A+B2.全减器全减器包括三个输入,即本位的被减数A、减数B和低位向本位的借位CI,两个输出,即本位差D和本位向高位的借位CO。减法运算式为:(CO,D)=A-B-CImodulesub1(CI,A,B,CO,D);inputCI,A,B;outputCO,D; assign{CO,D}=A–B-CI;endmodule多位加/减法器多位加/减法器通常由全加器级联构成。2位加法器在数学运算中,两位数加是从最低位开始,逐位相加。最低位的A0、B0和CI相加,结果为CO0和S0,将CO0作为CI1,参加高位的加运算,A1、B1和CI1相加结果为CO和S1。以此类推,n位加法器由一个n-1位加法器和一个全加器级联而成,n-1位加法器的进位作为一个全加器的低位进位CI,全加器输出和的第n位和进位CO。moduleaddn(CI,A,B,S,CO);parametern=;inputCI;input[n-1:0]A,B;output[n-1:0]S;outputCO;assign{CO,S}=A+B+CI;endmodule应用示例【例】有符号数加法器:输入8位有符号数A和B,输出8位本位和S和1位进位标志CF,有符号数的加法还会出现溢出现象,因此同时也输出1位溢出标志OF。moduleSAdd8(A,B,S,CF,OF); input[7:0]A,B; output[7:0]S; outputCF,OF; wireCp; assign{Cp,S[6:0]}=A[6:0]+B[6:0];//产生本位和的低6位和次高位进位标志 assign{CF,S[7]}=A[7]+B[7]+Cp;//产生本位和的最高位和最高位进位标志 assignOF=Cp^CF;//产生溢出标志endmodulemoduletest;reg[7:0]A,B;wire[7:0]S;wireCF,OF;

SAdd8sadd8_0(.A(A),.B(B),.S(S),.CF(CF),.OF(OF));initialbeginA=100;B=27;#100;B=28;#100;A=-100;B=-28;#100;B=-29;#100;$stop;endendmodulemoduleaddn(CI,A,B,S,CO);parametern=;inputCI;input[n-1:0]A,B;output[n-1:0]S;outputCO;assign{CO,S}=A+B+CI;endmodule数据选择/分配器1.数据选择器从多路输入中选择一个作为输出,也称为多路选择器(MUX)。它有n个地址输入An-1,…,A0、N=2n个数据输入DN-1,…,D0和1个数据输出Y。n个地址构成的二进制值i,输出Y就等于输入Di,其数学描述为:Y=Di,i=(An-1…A0)2。moduleMux4(A,D,Y); input[1:0]A; input[3:0]D; outputregY; integeri; always@(*) for(i=0;i<4;i=i+1) if(A==i) Y<=D[i];endmodule

本节内容moduletop_module(input[15:0]a,b,c,d,e,f,g,h,i,input[3:0]sel,output[15:0]out);always@(*)begincase(sel)4'b0:out<=a;4'b1:out<=b;4'd2:out<=c;4'd3:out<=d;4'd4:out<=e;4'd5:out<=f;4'd6:out<=g;4'd7:out<=h;4'd8:out<=i;default:out<=16'b1111_1111_1111_1111;endcaseendendmodule

moduleDemux4(A,D,Y); input[1:0]A; inputD; outputreg[3:0]Y; integeri;//循环结构中的计数量,不是信号 always@(*) for(i=0;i<4;i=i+1)//生成4个if语句 if(A==i) Y[i]<=D; else Y[i]<=1;endmodule应用实例-ALU算术逻辑运算器运算器支持8种两个8位数X和Y的数据运算,即加、减、位与、位或、位异或、左移1位、右移1位、赋值,但每次只能进行1种运算,通过3位控制信号OP改变运算类型,同时给出进/借位标志CF、溢出标志OF、符号标志SF和结果为零标志ZF。设计此运算器的电路结构图及相应的HDL代码。 always@(*) case(OP) 0:{OF,CF,Z}<={oa,ca,sa}; 1:{OF,CF,Z}<={os,cs,ds}; 2:{OF,CF,Z}<={2'b0,X&Y}; 3:{OF,CF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论