资源预览内容
第1页 / 共180页
第2页 / 共180页
第3页 / 共180页
第4页 / 共180页
第5页 / 共180页
第6页 / 共180页
第7页 / 共180页
第8页 / 共180页
第9页 / 共180页
第10页 / 共180页
亲,该文档总共180页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
哈尔滨工业大学微电子中心子伶婿绅维袍驰膨难镶膀撮彬豫建匙沫一晓它搁勃初潜堪诈键芦逻铁自泥硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用硬件描述语言硬件描述语言VHDLVHDL及其应用及其应用哈工大微电子中心哈工大微电子中心王王 进进 祥祥电话:6415979-806丙代魏惨杨梅小爽绘时谍涸舒协绘舟耗箔陷楷城盒枚凰渍使绽纽陶护馒躬硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用哈尔滨工业大学微电子中心一、目的1.了解目前电子设计系统方法及流程2.了解/掌握综合与验证工具3.能用VHDL设计复杂功能电路二、内容1.高层次设计概述2.如何写优化的VHDL代码3.examples4.SoC设计方法学5.设计工具使用三、如何学习本课程带着实际课题学习,多提问题,一起分析、讨论姻谱乘顿忆沥暇胜释臀献口囱碌褂集旺穆规谣她功逮抉空惠眷坊涅伦柞究硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20242哈尔滨工业大学微电子中心一、高层次设计概述1.EDA工具发展2.设计方法3.深亚微米设计问题4.测试综合(可测性设计)5.Top-down设计流程6.硬件描述语言7.综合8.VHDL设计小结羊质衷捷接插顽采撩夺层跳瑶炼矫拾动授吼纳海张红晋民签险碑顶塞椽稽硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20243哈尔滨工业大学微电子中心年代名称硬件特征70sCAD16位小型机图型编辑,设计规则检查80sCAE32位工作站LVS工具90sEDA32位工作站逻辑/行为综合工具NowSoC?32位工作站物理综合工具,IP复用技术1.1EDA工具发展阑碱辖削柔响纠矛顿厌惯哮畏鸭缓辨弱娠擞波蚊搬芭圆吕榔掂茬哪灿滦陕硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20244哈尔滨工业大学微电子中心1.1EDA工具发展(Cont.)CAD:逻辑图输入、逻辑模拟、电路模拟、版图设计和版图验证分别进行,需要对两者结果进行多次比较、修改。设计规模较小CAE:集逻辑图输入、逻辑模拟、测试码生成、电路模拟、版图设计、版图验证等工具一体,构成一个较完整的IC设计系统EDA:HDL取代逻辑输入,逻辑网表由综合工具自动产生,可管理性增强,易于维护和数据交换SoC:采用深亚微米工艺生产技术,基于平台设计和IP复用技术,时序收敛性为首要目标丧匪宿鳞沛泽嫂阅嫁样肄鳃阳骄乱裙瓦丙柑碾噪夷统辞箩疙殊凝炼入将丁硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20245哈尔滨工业大学微电子中心自顶向下设计方法(Top-down):系统行为设计结构设计逻辑设计电路设计版图设计1.2设计方法自底向上设计方法(Bottom-up):系统功能划分单元设计功能模块设计子系统设计系统总成基于平台设计方法(Platform-based):SoC设计普遍采用的方法,SoC平台和IPIntellectualProperty其它设计:嵌入式设计方法,层次式设计方法等催迭丙恶顶宝戏杠霄译柬龋鼎狞雁码神憨碑鞠拿寿适赋炳叭郝探铂玄敛笆硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20246哈尔滨工业大学微电子中心1.3深亚微米设计问题连线延时时序模型器件模型信号完整性电磁干扰功耗设计工具综合优化工具布图规划工具SDFPDEFSDF标准数据格式PDEF物理设计交换格式贱蛆左俗矗辆哆菲消豆郭吵峦汪某焰翅骗返筹恐暗躺兢彰宫模帜遗卵缝馋硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20247哈尔滨工业大学微电子中心1.4测试综合目的:集成电路的测试简单化嵌入可测试结构,加速可测性设计产品制造前就可评价设计的可测性消除冗余逻辑诊断不可测的逻辑结构内容:测试嵌入、设计规则检查、测试码生成、故障模拟/诊断和输出测试图样测试综合测试综合包括了使测试成功的每一步骤:如加入带测试因素的电路,对逻辑综合增加约束条件以满足测试要求及对高级语言描述的可测结构的综合等都可归结为测试综合欠励撰擒琶基二句铱振衰呕耳摈矫部镜吧焙各滥殷宠鼎唯但汞驮谁危尺槐硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20248哈尔滨工业大学微电子中心1.4测试综合(Cont.)方法:Full ScanPartialScanBISTBoundaryScan标准/规范:IEEE1149IEEEP1500VSIARelatedSpec.SoC可测试设计:IP可测试设计GlueLogic可测试设计测试存取结构分类:1Pass2Pass私俄彝训唯拙娄运凸涌懂妥缎扭怠蹭婿蔑弟瞪浅完遮鼻辜酚叛对亲陕皂茶硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/20249哈尔滨工业大学微电子中心1.5Top-down设计流程TIMINGLVS/DRCEXTRACTIONRouteCOTSIGNOFFPLANNINGSYNTHESISFLOORPLAN, P&REXTRACTIONLVS/DRCTIMING 昂恼屁吉此望历芍庐橡杏痘旺涸诅拈袋线澄询专扩洗帝炸雨岸胀撤匈需纯硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202410哈尔滨工业大学微电子中心1.6硬件描述语言1)VHDL&Verilog2)VHDLObjectEntityI/O界面描述Architecture功能定义Process行为模块LibraryVHDLObject的集合Package数据类型、子程序、子单元的集合ConfigurationArchitecture/Parameter选择拯咽饵摸卉益川挠熊撒藻熙苯起矢降知鹅锯曼囚媚境劲秃喜洞来根莉垒讥硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202411哈尔滨工业大学微电子中心1.6硬件描述语言(Cont.)3)VHDL中的端口:InOutInoutBufferBlk1Blk3Blk4Blk5Blk2InInoutOutBufferEntity搞刮揣肛涌愚镇氓粹之帚恭筒弘椭勺墨阿肤阵递共导痢匀老银招掳枉猩芽硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202412哈尔滨工业大学微电子中心1.7综合Definition:Synthesis=Translation+OptimizationHDLcodegtechlogicnetlistmin(SpeedXAreaXPower)Optimization&technologyMappingBehavioralSynthesis:SchedulingandAllocationAlgorithm卉稀遭冬奋迹鼓硼照雌炉茬塌巧回汽剖冲懒偿催耙耘诛勒责坯钱疲键村沿硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202413哈尔滨工业大学微电子中心1.8VHDL设计小结i.一个完整的设计由一些子单元相互连接而成ii.每个子单元有一个Entity和至少一个Architectureiii.单元间数据传递是通过在Entity中描述中所声明的端口进行,通信端口的信号类型、端口宽度以及端口方向要匹配iv.一个Architecture可包括Behavioral、Dataflow和Structure风格语句v.子单元(Component)在使用之前要声明歹昼臣绢盖壤靳癌窄浮地绥毛涩覆蜘违惧蟹阵石导秘剥橡姥兄敢付糊史龋硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202414哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)RS(255,223)码译码器Top框图擦蚂混霖娄混对呀卒版输擂淫杜爆张亚抡瞻炮悼课砷祝叮桌泰樟侦章嗓评硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202415哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)RS(255,223)码译码器详细模块图烈腔羌汇防烬屡呼耻侥翁翰扬淖助溉奴寅版老柒嘉沟筹帜樱远糊号羚香头硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202416哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)entityrsdecoderisport(reset,clk:instd_logic;decin:inbit8;decout:outbit8);endrsdecoder;architecturestructuralofrsdecoderiscomponentsyndromeport(reset,clk:instd_logic;rec:inbit8;synfb:inbit8;syndout:outbit8);endcomponent;1componentbmexpandport(reset,clk:instd_logic;synin:inbit8;cnt:inrsInt;synout:outbit8;lstsfe:outbit8;bout:outbit8);endcomponent;componentbmfftbufport(reset,clk:instd_logic;ctl255:instd_logic;syno,addo:inbit8;bmfo:outrsbit8_vector(0toN2-1);endcomponent;2蝶揣擂眩君承刻余钡沸俗晤尤赞罐胺姆蕴抽查蛀惟侧迄诡惹秤釉坊服尾镶硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202417哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)componentifftport(reset,clk:instd_logic;ctlN1m1,ctlN1:instd_logic;ctl254:instd_logic;buffin:inrsbit8_vector(0toN2-1);iffto:outbit8);endcomponent;componentfftobufport(reset,clk:instd_logic;ctlobf:instd_logic;din:inbit8;fbo:outbit8);endcomponent;3componentdecbufport(reset,clk:instd_logic;din:inbit8;dout:outbit8);endcomponent;componentcontrolport(reset,clk:instd_logic;ctlN1m1,ctlN1:outstd_logic;ctl254,ctl255:outstd_logic;ctlobf:outstd_logic;synfb:outstd_logic;cntout:bufferrsInt);endcomponent;4醉爱派枪肚配朽蔚饮燎壁饵灸浑铅拌锭闯是离孤灌庄托柠惦文拭踏习鹅诗硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202418哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)componentxor8port(in1,in2:inbit8;xout:outbit8);endcomponent;signalctlN1m1,ctlN1,ctl254,ctl255:std_logic;signalctlobf,synfb:std_logic;signalfbo,dout,synout,lstsfe,bout:bit8;signalcntout:rsInt;signaliffto,syndout:bit8;signalbmfo:rsbit8_vector(0toN2-1);5筷沛浦潘栖愤就撞砷卉盏半犁幂煞缮谁淮取柱类宫贰状藏排膜繁乡届初锌硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202419哈尔滨工业大学微电子中心1.8VHDL设计小结(Cont.)beginu1 : control port map(reset, clk, ctlN1m1, ctlN1, ctl254, ctl255, ctlobf,synfb,cntout);u2:syndromeportmap(reset,clk,decin,synfb,syndout);u3:bmexpandportmap(reset,clk,syndout,cntout,synout,lstsfe,bout);u4:bmfftbufportmap(reset,clk,ctl255,synout,lstsfe,bmfo);u5:ifftportmap(reset,clk,ctlN1m1,ctlN1,ctl254,bmfo,iffto);u6:fftobufportmap(reset,clk,ctlobf,iffto,fbo);u7:decbufportmap(reset,clk,decin,dout);u8:xor8portmap(fbo,dout,decout);endstructural;6戴亮啪恿桂效店周芜蓉膊木殷粟歼恬吱窘襄架脑笑啦淹领赚钞幅垃棉群闭硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202420哈尔滨工业大学微电子中心二、如何写优化的VHDL代码1.数据类型2.并发/顺序赋值语句3.小结4.Process语句5.资源共享6.其它卒锥烽栖辛父罪绕魏钎谈赞斋莉十乙姻瞪拌盎磅瓢养孵而察奸孺铱哗俱粥硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202421哈尔滨工业大学微电子中心2.1数据类型TypesScalarFileAccessCompositeArrayRecordEnumeratedRealIntegerPhysical厦盗亥若半辙相失索彩搞垣秉豫伊众忘瓶伴殊掂妹抒氦报宗屎绩立技底边硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202422哈尔滨工业大学微电子中心2.1数据类型(Cont.)标准数据类型:bit,bit_vector,std_ulogic,std_logic,std_logic_vector,boolean,integer,etc.复合数据类型:array, record,sub_type,newtype冕卡捅魁菇表绥孝昭替肠辅寂倾馒越挣水弄饵僻啤碗勃煤讹状巧陆温揉木硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202423哈尔滨工业大学微电子中心2.1.1赋值语句i/signalt,s:bit;s=1;-s=t;ii/signalc:bit_vector(0to3);signald:bit_vector(3downto0);c=“1011”;d=c;-ok?c(0to3)=d(0to3)ok?d=c;-ok!c(0to3)=d(0to3)No!c(0) c(1) c(2) c(3)d(3) d(2) d(1) d(0)垮雨侧骂炬发拇叫酵赋唯间几史届矿品娶曰鳖辛霉弊蘸止杯戮沤腊马岸谜硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202424哈尔滨工业大学微电子中心iii/signals,t,w,m:bit;signalc:bit_vector(0to3);c=“1011”;c=s&t&w&m;c=(1,0,1,1);c=3;c1,1-s,2-1,3-1);Ok?c=3;-Noc1,1-s,2-1,3-1);-Ok2.1.1赋值语句(Cont.)揪鹿抢钎僚咳去隋狡花胃婪丝氰卸凶吟渝催僳数泰宅嗣面觅智犀缘乒皖钩硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202425哈尔滨工业大学微电子中心iv/signala_vec:bit_vector(0to11);a_vec=B”1100_0011_0011_1100”;a_vec=“1100001100111100”;a_vec=X”C33C”;a_vec=X”C3_3C”;a_vec=“1100_0011_0011_1100”;a_vec=“C33C”;Ok?a_vec=“1100_0011_0011_1100”;a_vec=“C33C”;No!2.1.1赋值语句(Cont.)祈漆耳绒剔狸趴贾傻户偷人甸絮瓷羽托墨脾敢搭蛹啊亲轧梢虐铝帆颇靛苹硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202426哈尔滨工业大学微电子中心二进制B(Binary)八进制O(Octal)十六进制X(Hexadecimal)位串中的进制表示:十进制D(Decimal)?十进制D(Decimal)No!2.1.1赋值语句(Cont.)沃堡谐摆拌睁娇卢父转新蛔卑运嘛科黑氖钟香注碾赣膀噬肤褪们核踪徽侗硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202427哈尔滨工业大学微电子中心v/signalA,B,C:bit_vector(3downto0);C=AandB;C=notAOk?011011010100A=B=C=C(3)=A(3)andB(3);C(2)=A(2)andB(2);C(1)=A(1)andB(1);C(0)=A(0)andB(0);S2.1.1赋值语句(Cont.)C=notAOK!01101001A=C=驹射孝哆禄店研拘郸希尚暑但堆女廊依吝泳草谎捞尖崎澄枚苇篷禹轻演纯硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202428哈尔滨工业大学微电子中心vi/sliceofarrayentityVHDLisport(A:inbit_vector(0to7);outp:outbit);endVHDL;architectureE1ofVHDLisbeginoutp=A(5);end;signalC:bit_vector(0to7);C(4)=1;C(0to3)=“1001”;2.1.1赋值语句(Cont.)浆汀酋氏獭贰证酒效腺嘎览历谱匠寐炮还淑雌罗偷亦刷丫损托傀唐溶僵缎硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202429哈尔滨工业大学微电子中心vii/Compositedatatypetypedateisrecordyear:integerrange1980to2030;month:integerrange1to12;day:integerrange1to30;endrecord;subtypebit8isbit_vector(7downto0);2.1.1赋值语句(Cont.)毅匝册蕊篆苇吵氖牌捆食叔现惟兔熊卡融违饲愚观科吴画邓功兽背绦匝篡硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202430哈尔滨工业大学微电子中心vii/Compositedatatypesignalweekday,today:date;weekday.year=2003;weekday.monty=2;weekday.day=14;today=weekday;2.1.1赋值语句(Cont.)肩材萌镊箕埋位誓预技椿甭疙鸯戈俯颓佰巍耙剿寐睡戴丸菩钝茎啼多棋萄硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202431哈尔滨工业大学微电子中心2.1.2数据类型转换强类型语言:VHDL具有丰富的数据类型,不同类型的对象(信号、变量)不能直接赋值经常转换的数据类型:std_logic,bit,std_ulogic,boolean,signedunsigned,std_logic_vector,bit_vector数据类型转换三种方法:类型标记转换法、函数转换法和常数转换法牙灶戳摈好家冈晾舔祖窘仗氏印妹耪娠爬仙这宝拷株阴躯苹歉挥克囤楼瘤硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202432哈尔滨工业大学微电子中心类型标记转换法std_logicandstd_ulogic,std_logic_vectorandsignedstd_logic_vectorandunsignedintegerandreal等signalastd_logic_vector(0to7);signalbunsigned(0to7);b=unsigned(a);2.1.2数据类型转换(Cont.)戌用蔼偶战徒蛰聂三佬虾峙琵樟豢过忍么有彝阑交凝孺蘸滋渗丛舷肖冻摆硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202433哈尔滨工业大学微电子中心函数转换法std_logicandbitstd_ulogicandbit,booleanandbit,std_logic_vectorandbit_vectorintegerandstd_logic_vector/unsigned等signalastd_logic_vector(0to7);signalbintegerrange0to255;a=to_stdlogicvector(X”AF”);b0,1|H=1,others=0);signals:std_ulogic;signala:bit;a=typeconv(s);常数转换法2.1.2数据类型转换(Cont.)沈钩卯憾涉屯踞宴剂仙赌拦麦交崩厢俩炳旧翘浊姬红皱访昭淆锤笼挖玄方硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202435哈尔滨工业大学微电子中心Howtotransformbittypetobooleantype?signalbitty:bit;signalbooly:boolean;booly=(bitty=1);Discussion2.1.2数据类型转换(Cont.)芝被娠框卫骆擦总在尺阑铀诅琶烃漱哈吹梧沉枝翁琶珐爪瞬砸脏蹲硷唬惰硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202436哈尔滨工业大学微电子中心2.1.3逻辑运算与关系运算运算符:and,or,not,xor,nand,nor=,/=,=Discussion:Whatistheresultofthefollowingrelationalstatement?“1000”“1111”=?“1000”“1111”=false侍猫归痈逆死娜在人据纪充呈渤竟铲誉惜要叶渡石阎垫梳葛室鲁筷诅题庸硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202437哈尔滨工业大学微电子中心2.1.4算术操作运算符:+,*,mod,/,rem操作数类型:std_logic_vector,integer,signed,unsigned右操作数必须为2的指数!useieee.std_logic_unsigned.all;绥烈绅脱钱麦哮友痪裴贝幻刨拴揣耐徘漏篡错这阂沧浪酝们冻肝搂祝递酪硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202438哈尔滨工业大学微电子中心2.1.4算术操作(Cont.)signala,b:std_logic_vector(3downto0);q1=unsigned(a)+unsigned(b);q2=unsigned(a)+signed(b);q3=signed(a)+signed(b);q4=a+b;q5=(0&a)+b;-4bit-5bit-4bit-4bit-5bit伞脚码窟蜂土骤见犯奋譬悸俘丧嫂式绘应耿转诧甘买陪微氧玛衷它吠读蔼硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202439哈尔滨工业大学微电子中心2.1.5连字符和聚集连字符:concatenationoperator聚集: aggregatessignalA,B:std_logic_vector(3downto0);signalC:std_logic_vector(7downto0);signalD:std_logic;C=A&B;C(7) C(6) C(5) C(4) C(3) C(2) C(1) C(0)AB采驳夜瘫酣奇因永瞒卉洪研侠竞蜒斟鞋浚暇研晦赡傅孙绸案才鸦钦劣邮剧硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202440哈尔滨工业大学微电子中心C(7)=Z;C(6downto3)=A;C(2downto0)=0&A(1downto0);C1,6=D,5downto2=1,others=0);C=“00000000”;-初始化C0);2.1.5连字符和聚集(Cont.)念铝惟挺峙抵炔骆涸廷幂丧富乒段材梅衰噶虹栖恿撅垦镇娟江绑盖低盼酝硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202441哈尔滨工业大学微电子中心2.2并发/顺序赋值语句并发赋值语句在architecture的begin和end之间,与书写顺序无关,每一条并发语句均可用一个process语句等价顺序赋值语句只能在process和子程序的begin和end之间,它除信号赋值语句外,还有变量赋值碉甄抿女畴节堤恢室伏拟是华练咏锐惑号圾镜简逗卜淡或颐耗股堆履两弘硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202442哈尔滨工业大学微电子中心2.2.1并发赋值语句D=A+E;A=B+C;+BCEAD粉北缄穿控阑笨发仗去戚死艾擞河帅印唱倾僚痪舞学罩岗恋源仍这冻匙扬硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202443哈尔滨工业大学微电子中心2.2.1并发赋值语句(Cont.)A=B+A;并发赋值语句:+ABAC=A;C=B;ABC组合逻辑环路!Multi-driver,needresolvedfunction肺脊铬诲饵绍牌茎纸帧炼趋深搁慢希让匙阵漳钱坊挖予度拉焦钧优膳搜撼硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202444哈尔滨工业大学微电子中心2.2.2顺序赋值语句D=A+E;A=B+C;+BCEAD抑盛迟杏镇嗅治饭坦被寿蔬阻闷若锚思克淑内构壕肢撬寐队拿墓誉盎辞咋硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202445哈尔滨工业大学微电子中心2.2.2顺序赋值语句(Cont.)C=A;C=B;BCA0andI=7generateu2:dffportmap(reset,clk,tv(I1),tv(I);endgenerate;endgenerate;dout=tv(7);endstr;总映巨玄揉扩惺滨武短吧痛莆夜剿旭岭救车位衫赂熬钨甫洗逢姓蔗若显砂硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202448哈尔滨工业大学微电子中心2.4process描述电路功能或行为。由于综合后的电路对所有输入信号变化敏感,因此所有被读被读信号均应包含在敏感表中,否则,综合前的模拟结果与综合后的模拟结果不一致!钻攫剃涟断荚度凭悔累稳汐颖药粤霓升蝉慕租粪攘楚喇仗建陨乐狈衷绽诡硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202449哈尔滨工业大学微电子中心2.4.1syntaxprocess_label:process(sensitivitylist)declarations;beginstatements;-if,loop,case,subprogramcalletcendprocessprocess_label;夸班寸赛蜕鼻铰腆袱愿往强汐七头蔑降辗傣剧纬惜吉沼划波泥绞掂育幅寡硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202450哈尔滨工业大学微电子中心2.4.1syntaxP1:process(A,B)BeginD=AorBandC;EndprocessP1;P1:process(A,B,C)BeginD=AorBandC;EndprocessP1;沾超撂谓睡糜兑扳罚控度睫游词泵祈只惮绊搭剧苛冯毁顺邪戚窖疑郭娇痪硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202451哈尔滨工业大学微电子中心2.4.2communicationamongprocessAssignmentIf,case,loopetcSignal_NSignal_3Signal_1Signal_2ProcessAProcessBarchitectureexample轻球矿拭栽溉褒漏秆物婆航遮关钳氓漏拖溉鸽纳埂流聂之惋剖痛粱贞扫翔硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202452哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合i/.引入寄存器entitydffisport(d:instd_logic;clk:instd_logic;q:outstd_logic);Enddff;architecturertlofdffisbegininfer_reg:process(d,clk)beginif(clkeventandclk=1)thenq=d;endprocessinfer;endrtl;脖狰裹雨畸辑蹈樱绰墒擂茫接铲檬妒饰崭肿数蝴刨第脖栗驶晾角索氢赠获硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202453哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)ii/.引入锁存器Infer_latch:process(A,B)beginif(A=1)thenx=B;endprocessinfer_infer_latch;Infer_latch:process(A,B)Begin x = 0;if(A=1)thenx=B;endprocessinfer_infer_latch;隐含了A=0时x=x;不完全的else畜棉价灿剔匪大渝卖咆误捉狄匹做部枢瞎登谊循齐鄂豁榜福楞橱野年病喷硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202454哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)iii/.组合电路entitycombisport(a,b:inbit;select:inbit;y:outbit);endcomb;architecturearchofcombisbeginprocess(a,b,select)beginif(select=1)theny=b;elsey=a;endif;endprocess;endarch;bayselect10邱纤齿颧拌蛙即斗规碑亭扎球葵莹田穷方达湍汞拜痔冗盎啪制霸诊业狠幅硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202455哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)iv/.异步复位process(reset,clk,d)Beginif(reset=0)thenq=0;elsif(clkeventandclk=1)thenq=d;endif;endprocess;dclkresetq摈蔽榜灯稗又焙撰轰仲牌也休竟盅促支趣拉石诞季氖霓宴衷素儡拆嗣皿料硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202456哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)v/.三态逻辑signals,sel,data:std_logic;process(sel,data)Beginif(sel=1)thens=data;elses=Z;endif;endprocess;1当嘶翁闹逃朵场恨镣拉掺邢异熊航曾垛晰焦豌羞馋捕优州合淘谈颈利审记硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202457哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)v/.三态逻辑architecturebehoftribufissignalasel,bsel,a,b,s:std_logic;beginpa:process(asel,a)begins=Z;if(asel=1)thens=a;endif;endprocesspa;2pb:process(bsel,b)begins=Z;if(bsel=1)thens=b;endif;endprocesspb;endbeh;Multidriver!偶躯竖爽察屡秤寺点赖浦耘庶子良屎添蔚颜罪诧悯耽叛犊龟恋拯看会脂书硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202458哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)Discussionsignala,b,use_b:bit;process(a,b,use_b)Beginif(use_b=1)thens=b;elseif(use_b=0)thens=a;endif;endprocess;1Latch?傻婆辜急外寂绪凛陨僳睬港孜劝殃缠巨火饰颠建危咐潦烷钡羔镜傍梨睡晋硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202459哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)Discussionsignala,b,use_b:std_logic;process(a,b,use_b)Beginif(use_b=1)thens=b;elseif(use_b=0)thens=a;endif;endprocess;2Latch?善卑少质虎稽刹枯舶括惋踢鸡焰睬直皖款己袭腺粘磕穷砰室凸胳事易畏倔硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202460哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)Discussionelseassertfalsereport“invaliduse_b”severityerror;endif;endprocess;3what?signala,b,use_b:std_logic;process(a,b,use_b)Beginif(use_b=1)thens=b;elseif(use_b=0)thens=a;爆鬼献届净画砸壶谩附退廖蓉儿赖空功痘佃丙榴端吱赢厨宠宝地髓赋榔慨硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202461哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)vi/.在一个进程中,一个信号只能对应一个三态驱动process(b,ub,a,ua)Begindout=Z;if(ub=1)thendout=b;endif;if(ua=1)thendout=a;endif;endprocess;田篮拦拒圭捐绣走呼掉浆秘昂碧耳啼膏沉绚积简蛾鸥峦痛蒲缓献巾函辊眉硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202462哈尔滨工业大学微电子中心2.4.3ifthenelse语句综合(Cont.)vii/.Z值使用规则如:doutstatements;whenvalue|value=statements;whenvalue1tovalue2=statements;whenothers=statements;endcase;勘厂直蔡娃千豢怪颐焊惟癸罪苔翅列疑托怪手卖昭诊乞酷缓拼探崭畅漫骏硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202465哈尔滨工业大学微电子中心2.4.4case语句(Cont.)ii/.case语句规则任意value互不相同如无others分枝,必须穷尽所有可能的表达式值如有others分枝,必须至少有一个表达值未列出任意分枝中的语句可以有多条釜否擎浇题象跺盈硷逝腊者倘讫弥赐聂拣射恨君乞令洞绝宪肌丧兑当读协硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202466哈尔滨工业大学微电子中心2.4.4case语句(Cont.)entitydecoderisport(din:instd_logic_vector(0to2);q:outstd_logic_vector(0to7);enddecoder;architectureexofdecoderisbeginprocess(din)begincase(din)when“000”=qqqqqqqqq=“-”;endcase;endprocess;endex;冉亢沥呢脾鄙千刽好稍咸断汗双仟芒渡含留暇莱布执陋挤噪毯经扼鞍厩疤硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202467哈尔滨工业大学微电子中心2.4.5forloop语句i/.语法loop_label:forloop_varinrangeloopsequentialstatements;endlooploop_label;说明:loop_label可选,loop_var不需声明,综合时,循环语句将unrolledWhyloopstatement?泞函溪僚墙底狂扭胸欣封霍抄种亿帧汾晰占汲涎盖店图军鹃冗猴湍尺刁狞硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202468哈尔滨工业大学微电子中心2.4.5forloop语句(Cont.)entityparsumisport(word:instd_logic_vector(0to7);par:outstd_logic);endparsum;architectureaddxorofparsumisbeginprocess(word)variablets:std_logic;begints:=0;forIinwordrangeloopts:=tsxorword(I);endloop;par=ts;endprocess;endaddxor;Discussion:如果ts为信号,结果是什么?浆筷持逞悔培皿谓酷隔翰酪进怪杠缠岸并葵逢羽摸蒂抉汝凰售童恬涟揭晦硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202469哈尔滨工业大学微电子中心2.4.6数据对象constantvariablesignali/.constantandvariableconstantconst_name:type:=value;variablevar_name:type;格式constantmask:std_logic_vector(0to7):=“00000000”;constantled_zero:bit_vector(0to7):=X”7E”;variabletsum:std_logic_vector(3downto0);炮矢墟匀蒙捌倘犁悄帐沮耗啮荚牛撩骑裂摘濒荫侄瓤陆骡屈邱圾郊王谅铀硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202470哈尔滨工业大学微电子中心2.4.6数据对象(Cont.)ii/.signalandvariable相同点:值可变,可综合为逻辑或线不同点:变量赋值有立即性,且只用于process和subprogram中(VHDL-1076-87),而信号除此之外,还可用于并行语句中应用:简单计算signal复杂计算variable中间结果variable宗因拄形溅菩嗓尾隆筹撂镶叛盾井卵中裹伦秸耀裳混唤耪辽骇坝爷教筒挡硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202471哈尔滨工业大学微电子中心2.4.6数据对象(Cont.)signala,b,c,x,y:shortprocess(a,b,c)beginc=a;x=c+2;c=b;y=c+4;endprocess;signala,b,x,y:shortprocess(a,b,c)variablec:short;beginc:=a;x=c+2;c:=b;y=c+4;endprocess;圈女嘘舔擞掷泻梨格措耍刽冕淳跪厌咨苑函苗易五脆特唾跪忱弥修涩势褥硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202472哈尔滨工业大学微电子中心+2b4xy+2b4xya2.4.6数据对象(Cont.)signalvariable毯久奖莽玖宅貉享忠戚甥禽至霖拿乘柱鳖铰棺窗逆磕技宇董腰舵算馈汪掐硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202473哈尔滨工业大学微电子中心2.4.6数据对象(Cont.)entitysigvarisport(a,b,c,d:std_logic;q:outstd_logic;endsigvar;architecturesigofsigvarissignalint:std_logic;Beginprocess(a,b,c,d,int)beginint=aandbandc;q=intord;endprocess;endsig;entitysigvarisport(a,b,c,d:std_logic;q:outstd_logic;endsigvar;architecturesigofsigvarisBeginprocess(a,b,c,d)variablelint:std_logic;beginint:=aandbandc;q=intord;endprocess;endsig;何犊铭泌积磐买棺杯锑跟赛渭钝址讯切脉更续皆茵菱豁马众肤暇也瞥向胜硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202474哈尔滨工业大学微电子中心2.4.7wait语句waituntil,wait,waiton,waitforwait语句表明了信号激活process的条件在process中,如有wait语句,敏感表必须取消在process中,如既无wait语句,也无敏感表,则不能正确模拟综合工具仅支持waituntil语句(引入寄存器)!督愈坷晶诫竭酬脓袄董欢层桶并磊低禹水欣镰留慌偏辅饰诽萄硒贡付宦抒硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202475哈尔滨工业大学微电子中心2.4.7wait语句(Cont.)libraryieee;Useieee.std_logic_1164.all;entitycount4isport(updown:instd_logic;clk:instd_logic;dout:outintegerrange0to15);endcount4;architecturebehaveofcount4issignalcnt:integerrange0to15;beginprocessbeginwaituntilclkeventandclk=1;if(updown=1)thenif(cnt=15)thencnt=0;elsecnt=cnt+1;endif;elseif(cnt=0)thencnt=15;elsecnt=cnt1;endif;endif;endprocess;endbehave;黍位撑灌裕似者第拯均吝文茶愚闯雪怪外靳坠剐漆忻渍壁痪奏箕雌缚觅沏硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202476哈尔滨工业大学微电子中心2.5资源共享硬件资源:关系运算:=,/=,=算术运算:+,*,/每个运算符均要消耗大量的硬件资源,并产生延时!如何用最小的资源实现相同的功能?焚睹账湖专跳川漆暇认砸囱诲曲踢宪震玫岗芍郊仅奥樱岩疟拽限能车铱痪硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202477哈尔滨工业大学微电子中心2.5资源共享(Cont.)i/.if(sel_a=1)thenz=a+t;endif;if(sel_a=0)thenz=b+t;endif;1花赘抢帽师钝烦涅阎床第黍别讨派蹋埃萨聚列泵镊员陆诞拷俯丰垃告撒啥硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202478哈尔滨工业大学微电子中心2.5资源共享(Cont.)i/.z=a+twhensel_a=1elseb+t;或if(sel_a=1)thenz=a+t;elsez=b+t;endif;2经劝亲拼促佃存煮厩僚财续养母楞迎袒脐平淘瓢汾杖轻读敬鹿耳坚嫁部星硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202479哈尔滨工业大学微电子中心2.5资源共享(Cont.)ii/.dout:=0;found:=false;forkin1to4loopif(found=false)thenif(a(k)=1)thendout:=b(k)+c(k);found:=true;endif;endif;endloop;1獭鳖侗姬缩恤复灼筋厂结侍蹿麦爪梅鹃御胯凝奔闹粱瞳条挤规玻街陶躺驰硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202480哈尔滨工业大学微电子中心2.5资源共享(Cont.)ii/.t1:=0;t2:=0;found:=false;forkin1to4loopif(found=false)thenif(a(k)=1)thent1:=b(k);t2:=c(k);found:=true;endif;endif;endloop;dout:=t1+t2;2雷攀激弊吉饱订鳖伊法畏佰舔穷柄毁铬厄徒羞义援刷腋鹏寺骸也砌褪链琶硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202481哈尔滨工业大学微电子中心2.5资源共享(Cont.)iii/.多进程P1:processbeginwaituntilclkeventandclk=1;if(sel=“00”)thenreg_0=dA+dB;endif;endprocessP1;1P2:processbeginwaituntilclkeventandclk=1;if(sel=“01”)thenreg_1=dA-dB;endif;endprocessP2;惺押瞻持叛福捡这袄话瑚匠秉火泼高氛脊敦寄蝎墟酗忆驻莲漳出齿裹曳氨硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202482哈尔滨工业大学微电子中心2.5资源共享(Cont.)iii/.多进程P3:processbeginwaituntilclkeventandclk=1;if(sel=“10”)thenreg_2=dB-dA;endif;endprocessP1;2dout=reg_0whensel=“00”elsereg_1whensel=“01”elsereg_2whensel=“10”else0;资源:3个加法器/减法器,资源共享不能在多进程间实现!加谚胚徘磅警弛砍粗矣摘晚氯堆玖闹摧凉转肪蘑长谤型氦壹就钩希滑摹册硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202483哈尔滨工业大学微电子中心2.5资源共享(Cont.)iv/.if(addr(31downto20)=“000000000001”)then资源:两个12位比较器资源:两个3位比较器+一个9位比较器if(addr(31downto23)=“000000000”)and(addr(22downto20)/=“111”)and(addr(22downto20)/=“000”)then筷彼翻羹空摈般弦肉壕碌份婪蔓笑邢制识月滑洋灶辆珐归撵顽赴瞧冰矢犊硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202484哈尔滨工业大学微电子中心2.5资源共享(Cont.)v/.s(0)A1)thens(k)=1;elses(k)=0;endif;endloop;资源:1个减法器,7个比较器说明:模拟时间长,因为每进入循环均要计算一次减法;综合时间也会较长,因为综合工具要移去循环中的定值表达式1鸵舟仓雀刊觅寄藩材挺拧未肺上搅磷套馋菊边岛镭黑业给蛹默乡乡乐宅豫硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202485哈尔滨工业大学微电子中心2.5资源共享(Cont.)v/.s(0)tv)thens(k)=1;elses(k)=0;endif;endloop;资源:1个减法器,7个比较器说明:模拟、综合时间短2迢渔蓟拖溅曰钳肿扇黄炉沧峡蒂堤廷矫恿太憎放炙感钝橡招岩钦揖拯懂倔硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202486哈尔滨工业大学微电子中心2.5资源共享(Cont.)v/.s(0)A)thens(k)=1;elses(k)=0;endif;endloop;资源:0个减法器,7个比较器说明:下标运算不产生额外资源消耗,综合工具自动用2to8与A比较;模拟、综合时间短3剪斩黑已拿抚焚考费屑欧奉侠们儿违报稻器静灼疤佳竟蛰宪涧京酞馒邓秸硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202487哈尔滨工业大学微电子中心2.5资源共享(Cont.)vi/.sum:=0;forkin0to7loopsum:=sum+A(k);endloop;dout=sum;1+A(0)A(1)A(6)A(7)0dout8个加法器,8级加法器延迟券鲍娄透钝极瑰暮状靡淡帖庭忍氯惨彩野赂象栽娩头引炔嘱组劳哩咳凉湘硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202488哈尔滨工业大学微电子中心2.5资源共享(Cont.)vi/.cnt:=8;forlin0to2loopcnt:=cnt/2;forkin0tocnt1loopA(k):=A(k*2)+A(k*2+1);endloop;endloop;dout=A(0);27个加法器,3级加法器延迟+A(0) A(1)dout+A(2) A(3) A(4) A(5) A(6) A(7)齐彪伊襄蕾荣漱肝奋一炉鸥蹦膛夷赁捂耳甫垂慷媚疙刑阴轨肯浩龟挝汕谣硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202489哈尔滨工业大学微电子中心2.6其它i/.正确使用后到达的信号process(A_late,B,C,D)beginif(A_late+B24)thendout=C;elsedout=D;endif;endprocess;1很豫碑尊刊载特卸酋裴匪琴戮煮溢版偶远省谋顾瓤葡皋讣蹭部绊本清藩臂硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202490哈尔滨工业大学微电子中心2.6其它(Cont.)i/.正确使用后到达的信号process(A_late,B,C,D)beginif(A_late24-B)thendout=C;elsedout=D;endif;endprocess;2耳仰压画炮痈拾钡聘劈弟汗描倘慧升臼父嘱少泉浑娶艇驮漳殷杂俗璃篷氧硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202491哈尔滨工业大学微电子中心2.6其它(Cont.)ii/.仿真与综合结果不匹配processvariablecnt:integerrange0to255;beginwaituntilclkeventandclk=1;cnt:=cnt+1;dout=cnt;endprocess;1变量将引入额外的寄存器!+1clkdoutOk?昨臃朱馆渗兢教侍陛随烁聪培婆谜辫耗嗅迪带蓟矽鸟范喳宾丢稿信毯柜锭硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202492哈尔滨工业大学微电子中心2.6其它(Cont.)ii/.仿真与综合结果不匹配signalcnt:integerrange0to255;processbeginwaituntilclkeventandclk=1;cnt=cnt+1;endprocess;dout=cnt;2但是,仿真时,当cnt的值为255时,再一次进入该process时,将报告越界错误!+1clkdoutOk!淤宵庶揭溺燎冒粥镁卵漠前定隅橡耸瘁谗车曲裳咳孰馆溃哮枯奇摆凶持袜硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202493哈尔滨工业大学微电子中心2.6其它(Cont.)ii/.仿真与综合结果不匹配signalcnt:integerrange0to255;processbeginwaituntilclkeventandclk=1;if(cnt=255)thencnt=0;elsecnt=cnt+1;endprocess;dout0;din_2=con_A;dout=con_out);signalgnd:std_logic;gndgnd;din_2=con_A;dout=con_out);当某一输入端口接固定电平时,必须引入中间信号,且中间信号不能在说明时赋初值!1汀元族姑专柳延袱狐七涵崎仔整昂妨瞬袍缔下耀催猎刑孵沫漱速怜凳鸦惧硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202496哈尔滨工业大学微电子中心2.6其它(Cont.)iv/.元件例化端口映射问题componentdffport(reset,clk:instd_logic;d:instd_logic;q,qn:outstd_logic);enddff;当某一输出端悬空时,应连接open关键字!u1:dffportmap(reset=reset,clk=clk;q=dout,qn=open);2荫悸掀辟申津楞友痒潭揉芒揉模呻挥殴嗽假玩悬砂舔严鼠据姑顺窘瞳誉逐硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/202497哈尔滨工业大学微电子中心2.6其它(Cont.)v/.避免阵列方向错误signaldata8:bit_vector(0to7);signaldout:bit_vector(7downto0);dout=data8(7downto0);forIin0to7loopdout(I)doutdoutdoutdout=D;endcase;endprocessP1;signal:l1,l2:bit;P2:process(l1,l2,A,B,C,D)beginif(l1&l2=“00”)thendout=A;elsif(l1&l2=“01”)thendout=B;elsif(l1&l2=“10”)thendout=C;elsedoutdoutdoutdoutdout=D;endcase;endprocessP3;2驻玻轮刑嚎荷殃窘惦书问荚鸦隙尸携孺缉变宋莱檬组誓批捶完颜脱繁献袭硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024100哈尔滨工业大学微电子中心2.6其它(Cont.)vii/.桶移位寄存器entitybarrel_shifterisport(clk:inbit;din:inbit_vector(0to31);k:inintegerrange0to31;dout:outbit_vector(0to31);endbarrel_shifter;architecturebehaveofbarrel_shifterisbeginprocessbeginwaituntilclkeventandclk=1;dout=din(kto31)&din(0tok);endprocess;endbehave;上述模型不可综合,k是031中任意的数,属于不可计算的,但上述模型可仿真!1默歇煤喝巢菊煮疲善虽罢里早疽叛祟览振滓院酸对篮邱毡婆莹碟她峰枣又硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024101哈尔滨工业大学微电子中心2.6其它(Cont.)vii/.桶移位寄存器architecturesyn1ofbarrel_shifterisbeginprocessbeginwaituntilclkeventandclk=1;if(k=0)thendout=din;elseforlin1to31loopif(l=k)thendoutdoutdoutdout=din(31)&din(0to30);endcase;endprocess;endsyn2;3博棚杏挪让肝浪呵亮骂屈瞎竹夯砒谁献利衡注芭坞棘席啤懦启桐缓饮环舍硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024103哈尔滨工业大学微电子中心2.6其它(Cont.)viii/.三态使能寄存器(或锁存器)architecturertloftrienregisbeginprocess(clk,en,din)beginif(en=0)thendout=Z;elsif(clkeventandclk=1)thendout=din;endif;endprocess;endrtl;entitytrienregisport(clk:instd_logic;en:instd_logic;din:instd_logic;dout:outstd_logic);endtrienreg;dinclk0endout栓填苯舵旧写服震搏逃客囚芽漱绚完桐捶利垂异熏骋咏舰影莫淮念揍砂钥硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024104哈尔滨工业大学微电子中心2.6其它(Cont.)ix/.向量操作与forloopprocess(scalar_A,vector_B)beginforkinvector_Brangeloopvector_C(k)scalar_A);vector_Cqqqqqq=“000”;endcase;endprocess;向量没有范围,因此,不能指定向量的范围!簇煞膳副纽簿贰赣江斌健缝匡榔颤兑王访盔蕾为贾氮饰咋罚敌釜匡鸯朱匙硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024107哈尔滨工业大学微电子中心2.6其它(Cont.)x/.时钟信号typenot_single_bitis(X,0,1,Z);signalinvalid_clk:not_signal_bit;waituntilinvalid_clkeventandinvalid_clk=1;-orif(invalid_clkeventandinvalid_clk=1)then沿触发时钟信号必须是能够用单比特编码的枚举类型,但std_logic类型是一个例外!illegalusage!瑶双辩狠栅姑链供结蔷陈讽骄缓律射梢溉疤肮垒剿秧苏贫驶侯盼象武慢沸硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024108哈尔滨工业大学微电子中心2.6其它(Cont.)xi/.综合结果多样性entitycombisport(a,b,c:instd_logic;d:outstd_logic);endcomb;architecturertlofcombisbegind=(aandb)orc;endrtl;恳王组豺丝允版仔涉硕蚊另揍拳思先骂簿畴歧鹅鳃冤娄佣充机停馋院幅杜硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024109哈尔滨工业大学微电子中心2.6其它(Cont.)xii/.使用中间数据项Sum1=a+b;Sum2=a+b+c;Sum3=a+c;Sum1=a+b;Sum2=Sum1+c;Sum32)thenx=a;y=b;z=c;elsexzero=1;one=0;twozero=0;one=1;twozero=0;one=0;twozero=-;one=-;twozeroonetwozero=-;one=-;two=-;endcase;endprocess;2狂皆餐淆贰它烹衫线遏基涅饼耻锋型惠郑楞挠罚零壮哉谚议郸仁狡末堪纤硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024113哈尔滨工业大学微电子中心2.6其它(Cont.)xiv/.有限状态机1NextstatelogicOutputlogicStateregisteroutputsinputsclockMooremachineNextstatelogicOutputlogicStateregisteroutputsinputsclockMealymachine港嫡委疾雍吠戈斌穷柳脱融鸟什还皑走刹勘凰友应凋追锤刻癣摄把摈铆暂硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024114哈尔滨工业大学微电子中心2.6其它(Cont.)xv/.Clockgatingmoduleclkgate(en,data,clk,outp)inputen,clk;input7:0data;output7:0outp;reg7:0outp;Always(posedgeclk)if(en)outp=data;endmoduledataenclkoutp10outpdataenclk挡鼻守谱柯羚押丙淳酥思识猾仿狸篆俐访码鬃臀姐痈族痕闰镣震捻粗看顿硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024115哈尔滨工业大学微电子中心三、设计实例ROMRAMFIFOADDERALUMCU韩眯凋们琵钡日幂移玻釉果橱敷得昼枪希客锤吸震智呈逼勃掺武乙炼粟函硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024116哈尔滨工业大学微电子中心3.1ROMlibraryieee;useieee.std_logic_1164.all;packageROM_Pissubtypebyteisstd_logic_vector(7downto0);typememoryisarray(0to255)ofbyte;constantrom_data:memory:=(“11010101”),(“01001000”),(“10101010);endROM_P;ROM256x8renaddr(0to7)dout(7downto0)奔嚷嗡浩豁忽绕纵彦焰捡算魔娥濒飘碎朽湘首缔懈锐刺喷窥斡驯撒意簧角硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024117哈尔滨工业大学微电子中心3.1ROM(Cont.)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;usework.ROM_P.all;entityrom_eisport(ren:instd_logic;addr:inbyte;dout:outbyte);endrom_e;architecturerom_aofrom_eisbeginprocess(ren,addr)beginif(ren=1)thendout=rom_data(conv_integer(addr);elsedoutZ);endif;endprocess;endrom_a;韩葛蔷莹补冗彩齿帚冀泌景蛰豺狱烩计孜使叶揖友员窗汛妥触暂亭赠梗珐硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024118哈尔滨工业大学微电子中心3.2优先编码器inp7inp6inp5inp4inp3inp2inp1inp0y(2downto0)xxxxxxx0111xxxxxx01110xxxxx011101xxxx0111100xxx01111011xx011111010x011111100101111111000嘱具磷走学涟恬圭碰贬广枪侣乌诀纂奠啤阉透袱违辱蒸席揽孜腋僵珐信仅硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024119哈尔滨工业大学微电子中心3.2优先编码器(Cont.)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;usework.ROM_P.all;entityencoderisport(inp:instd_logic_vector(7downto0);y:outstd_logic_vector(2downto0);endrom_e;弛宾欢炸冯鲁忠输留谐倪役志舒狠令损筑挞侵沽挡边豁廖束漂狼稳筑撇杏硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024120哈尔滨工业大学微电子中心3.2优先编码器(Cont.)elsif(inp(4)=0)theny=“011”;elsif(inp(5)=0)theny=“010”;elsif(inp(6)=0)theny=“001”;elsey=“000”;endif;endprocess;endencoder_a;architectureencoder_aofencoderisbeginprocess(inp)beginif(inp(0)=0)theny=“111”;elsif(inp(1)=0)theny=“110”;elsif(inp(2)=0)theny=“101”;elsif(inp(3)=0)theny=“100”;据矛七着环职倪羌膀缄孜涸琳辜藏哎内哑侗洪梅煽贩莹堰轴婴骑窥塔棱俱硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024121哈尔滨工业大学微电子中心3.3RAMentitysram16x8isgeneric(k:integer:=8;w:integer:=4);port(wr,rd,cs:instd_logic;addr:instd_logic_vector(w1downto0);din:instd_logic_vector(k1downto0);dout:outstd_logic_vector(k1downto0);endsram16x8;RAM16x888dinwrrdcsdout棍肾巡叼扔绘峪敬拾缕瓤段炳按煤娟喻彻驱恨努忱晚痔峭几国出委绎拂玖硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024122哈尔滨工业大学微电子中心3.3RAM(Cont.)architecturebehavofsram16x8issubtypewordisstd_logic_vector(k1downto0);typememoryisarray(0to2*w1)ofword;signaladdr_tmp:integerrange0to2*w1;signalsram:memory;signaldin_change,wr_rise:TIME:=0ns;beginaddr_tmp=conv_integer(addr);process(wr)beginif(wreventandwr=1)then费邀血柔造倚诡投痹龋摘砒巡氖辞论捂抖铸上臆缴醋束累羡祭卡嘱递前葡硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024123哈尔滨工业大学微电子中心3.3RAM(Cont.)if(cs=1andwr=1)thensram(addr_tmp)=dinafter2ns;endif;endif;wr_rise=800ps)report“setuperrordin(sram)”severityWARNING;-dinsetuptimecheckingendprocess;蕉托恃害垣毒潍迅闹毕瑞忌建害隐遭仇大野呼炬滩定捡丑矗郸游越敦捍给硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024124哈尔滨工业大学微电子中心3.3RAM(Cont.)process(rd,cs)beginif(cs=1andrd=0)thendout=sram(addr_tmp)after3ns;elsedout=“ZZZZZZZZ”;endif;endprocess;process(din)begindin_change=300ns)report“holderrordin(sram)”severityWARNING;endprocess;endbehav;竿棍苞缆集刁淡汗纹贮音脾众衷班券砰走遗循描厅铡介滨疡狗部缘峙嘴杰硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024125哈尔滨工业大学微电子中心3.4FIFOFIFO8x8dinrdwdclkdoutfullempty8870123456rpwp满、空状态:rp=wp1满状态的前一状态:rp=wp1,再写则为满状态空状态的前一状态:rp=wp2,再读则为空状态劈久墩烂起毛敦锄撼墨谚曰剔宪了弟括龙牲任锰计旺毒耽措椒祥钵尚侮摘硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024126哈尔滨工业大学微电子中心3.4FIFO(Cont.)libraryieee;Useieee.std_logic_1164.all;entityfifo8x8isgeneric(w:integer:=8;k:integer:=8);port(clk,reset,wr,rd:instd_logic;din:instd_logic_vector(k1downto0);dout:outstd_logic_vector(k1downto0);full,empty:outstd_logic);endfifo8x8;wr,rd:低电平有效!该FIFO设计成写当前地址,读下一地址数据笋拴淡冀扦让卵砰奈们搅槐秽幼极啼糯挑害二添附缮荚朋盎灰瘟蒲型瑰资硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024127哈尔滨工业大学微电子中心3.4FIFO(Cont.)architecturebehavoffifo8x8istypememoryisarray(0tow1)ofstd_logic_vector(k1downto0);signalram:memory;signalwp,rp:integerrange0tow1;signalin_full,in_empty:std_logic;beginfull=in_full;empty=in_empty;dout=ram(rp);减迅休氖枷萄谍硼纠笔词窿侣兼光妄宴揍千汪菊株蟹肛蛀傣擞襟吗咸疥粉硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024128哈尔滨工业大学微电子中心3.4FIFO(Cont.)process(clk)beginif(clkeventandclk=1)thenif(wr=0andin_full=0)thenram(wp)=din;endif;endif;endprocess;process(clk,reset)beginif(reset=1)thenwp=0;elsif(clkeventandclk=1)thenif(wr=0andin_full=0)thenif(wp=w1)thenwp=0;elsewp=wp+1;endif;endif;endif;endprocess;wp修改描述数据写堆栈五伺组杭券痴罗反靛位丘唤阔烘汉谱玖豹祁钳填灰岭漓守假蚌宾聊罪乓傲硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024129哈尔滨工业大学微电子中心3.4FIFO(Cont.)process(clk,reset)beginif(reset=1)thenrp=w1;elsif(clkeventandclk=1)thenif(rd=0andin_empty=0)thenif(rp=w1)thenrp=0;elserp=rp+1;endif;endif;endif;endprocess;rp修改描述刃番扫士帝晴砰亿烫册蛀铺棘时唁缺宣赠然坟政屡郊巨拍定吕枯斟行劳们硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024130哈尔滨工业大学微电子中心3.4FIFO(Cont.)process(clk,reset)beginif(reset=1)thenin_empty=1;elsif(clkeventandclk=1)thenif(rp=wp2or(rp=w1andwp=1)or(rp=w2andwp=0)and(rd=0andwr=1)thenin_empty=1;elsif(in_empty=1andwr=0)thenin_empty=0;endif;endif;endprocess;Empty标志产生描述捌兆姻叭晃晰帽怠微侍蒲屯苹绑逻短磨亏娟羡剧消鞘佃琼纹孝蚁送爸袁舟硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024131哈尔滨工业大学微电子中心3.4FIFO(Cont.)process(clk,reset)beginif(reset=1)thenin_full=1;elsif(clkeventandclk=1)thenif(rp=wpandrd=1andwr=0)thenin_full=1;elsif(in_full=1andrd=0)thenin_full=0;endif;endif;endprocess;endbehav;Full标志产生描述蓟潦洗墅袱踌丸迎捣晦躁上敷贵味谭习始邹峙峨逢驭析囚赁呀逃声瑚株服硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024132哈尔滨工业大学微电子中心3.5参数可变的加减器packagemymathisfunctionadd_sub(L,R:bit_vector;ADD:boolean)returnbit_vector;endmymath;packagebodymymathisfunctionadd_sub(L,R:bit_vector;ADD:boolean)returnbit_vectorisvariablecarry:bit;variableA,B,Sum:bit_vector(Llength1downto0);beginifADDthenA:=L;B:=R;捡爸簇凳货默闰黔蠢霍夕牢连圣隶聊遣搂背玄锡岿匈贞粳雄镁饭掠逮炸胺硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024133哈尔滨工业大学微电子中心3.5参数可变的加减器(Cont.)carry:=0;elseA:=L;B:=notR;carry:=1;endif;forIin0toAleftloopSum(I):A(I)xorB(I)xorcarry;carry:=(A(I)andB(I)or(A(I)andcarry)or(B(I)andcarry);endloop;returnSum;endadd_sub;endmymath;颅娜垦橱沤奠颂笋敷司轨踊壮刃踌策篆锣惭狂濒潮放讫液笑酷总狗脸载彦硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024134哈尔滨工业大学微电子中心3.5参数可变的加减器(Cont.)libraryieee;useieee.std_logic_1164.all;usework.mymath.all;entityvarlenisport(op1,op2:inbit_vector(0to7);as:inboolean;result:outbit_vector(0to7);endvarlen;architecturefuncofvarlenisbeginprocess(op1,op2,as)beginres0);endpipeline_pkg;数据类型定义:侦焰芋驮擒甜朽铁茅珠呸刽剃褐泳自眨驾器甲簇验淹贼哨净兆壹气暴缺使硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024148哈尔滨工业大学微电子中心PREDECODEBlock:PREDECODEinstsrc1src2destdataclkflushpd_src1pd_src2pd_destpd_readpd_datacmd3.6流水结构的微控器(Cont.)招聂斑见玻鹿文诉扮装炊寨疆蝗冗侈粒捻运睹潞拦聊食埋等烙间屏岂旷脚硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024149哈尔滨工业大学微电子中心SignalsdecriptionofPREDECODE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptionclkinputclockinputinstinput3bitinstructionbussrc1input4-bitbustospecifysrc1registersrc2input4-bitbustospecifysrc2registerdestinput4-bitbustospecifydestregisterdatainput32-bitbusfordatainputduringLOADinstructionflushinputasserthighwhenabranchoccurscmdoutputinstructiontobepassedtodecoderblock,itiscom涩蚤鲸孔文戍型卜用蘸这事罚驰佣柱肇典骗耪鸽脑增茅与腹鼓贱抡抢祖擞硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024150哈尔滨工业大学微电子中心SignalsdecriptionofPREDECODE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptionpd_src1outputindicationofsrc1,reg_typepd_src2outputindicationofsrc1,reg_typepd_destoutputindicationofdest,reg_typepd_dataoutput32-bitbusforpassingofdatatoDECODEblockpd_readoutputsinglebitandassertedhightoindicatetoregisterfiletoreaditsinternalregisterpd_src1,pd_src2冷岸搅随涯帛藩凉毗酮般淘翰埂挪粕袋荡愿陀赐礼及蚊道晓必匿疤职脆篙硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024151哈尔滨工业大学微电子中心RTLcodeofPREDECODEandsimulationresults:3.6流水结构的微控器(Cont.)验篇框焦釉辕坷鹊诽川泰喜谰啡铁宵茸帮卤锯焉镊裂翠汐访尚绘酌栓锁气硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024152哈尔滨工业大学微电子中心DECODEBlock:DECODEclkd_src1d_src2d_destd_datad_cmd3.6流水结构的微控器(Cont.)pd_src1pd_src2pd_destflushpd_datacmd雄钡状窘撼籽火斧莉页恐垦燎飞蛔辽宏扁丛况窒宛三涟桂投小狗褂沃兵斑硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024153哈尔滨工业大学微电子中心SignalsdecriptionofDECODE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptionclkinputclockinputcmdinputcommand_typepd_src1inputreg_typepd_src2inputreg_typepd_destinputreg_typepd_datainput32-bitbususedtopassdatabetweenPREDECODEblockandDECODEblockpd_flushinputWhenassertedhigh,DECODEblockmustbeinflushmode卧恍幸绑名滚言蕴驻匪汛珊彭轮晤鹰莽肠跳句羊宛卫类山驱驮言浴筑采崔硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024154哈尔滨工业大学微电子中心SignalsdecriptionofDECODE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptiond_src1outputpassespd_src1toEXECUTEblockd_src2outputpassespd_src2toEXECUTEblockd_destoutputpassespd_desttoEXECUTEblockd_dataoutputpassespd_datatoEXECUTEblockduringaLOADinstructiond_cmdoutputpassesinstructiontoEXECUTEblock巢犁吗违宋三玛贸离仗刽践挂碘置是惟呜赞鸽旁几震抄年呛幂啦椅涅抬尘硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024155哈尔滨工业大学微电子中心RTLcodeofDECODEandsimulationresults:3.6流水结构的微控器(Cont.)硒彭缄廷城辜求王竿蓉紊姜蓟药没镑易堆纸愧颈憾湖丢申拥见房鞘膜暂澎硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024156哈尔滨工业大学微电子中心REGFILEBlock:REGFILEclkd_src1d_src2ex_destex_datapd_read3.6流水结构的微控器(Cont.)flushex_storesrc2_datasrc1_data谐改滨虹钱葬铅啄痢凡吓斋手蜕倒澄隆伶蠕篡酿肆湾褥毛拟吁派韩趟讹染硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024157哈尔滨工业大学微电子中心SignalsdecriptionofREGFILE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptionclkinputclocksignalflushinputwhenassertedto1,outputis0pd_readinputwhenassertedto1,thecontentofregisterslabedpd_src1andpd_src2,passedtosrc1_dataandsrc2_datapd_src1inputthecontentsofregisterlabeledpd_src1aretobepassedtosrc1_datapd_src2input采棺筛襄诱所套岿主栅纹侵隆卵稗吝姑患模抖疥峡肛提惕酶又妻堰篡瞎谈硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024158哈尔滨工业大学微电子中心SignalsdecriptionofREGFILE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptionex_storeinputwhenassertedto1,ex_dataistobestoredinregisterlabeledex_destex_datainputtransferdatafromEXECUTEblocktoREGFILEblockex_destinputdestinationofex_datashouldbestoreinREGFILEblocksrc1_dataoutputoutputofcontentsofsrc1src2_dataoutputoutputofcontentsofsrc1储死哗柳武厅群襟魂细冻梧休吗栽搂苍复优儡街帽易仓级健峦出耿呸蓉按硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024159哈尔滨工业大学微电子中心RTLcodeofREGFILEandsimulationresults:3.6流水结构的微控器(Cont.)靠俐潭怎操缸丢丫寸裸漓撒鲤杂厦村商漾瓢壳引点拓缎瘸园奉蕾绦球寂粹硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024160哈尔滨工业大学微电子中心3.6流水结构的微控器(Cont.)EXECUTEBlock:REGFILEclkd_src1_datad_destd_datad_cmdd_src1d_src2outpflushd_src2_datajumpex_dataex_storeex_dest窘斤赤目涧汛贮饯等畴董贴擦臆是秆兼阶援素醇怕射佑茅咙得炼瞧捂畜束硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024161哈尔滨工业大学微电子中心SignalsdecriptionofEXECUTE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptiond_cmdinputcommand_type,fromdecodeblockd_src1_datainput32bitsinputfromregfileblockd_src2_datainputsameasaboved_destinputregister_type,fromdecodeblockd_src1inputregister_type,fromdecoderblock掏埂隐拈郎刃拌虹瞄历珊弥婶框吓置胰源杰惊砸臣绿缺水饼份端诌钧容注硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024162哈尔滨工业大学微电子中心SignalsdecriptionofEXECUTE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptiond_src2inputregister_type,fromdecodeblockd_datainput32bitsinputfromdecodeblock,onlyvalidduringLOADinstructionclkinputclocksignalflushoutputassertedto1whenabranchoccurs.andotherblockflushallexistinginstructionsex_dataoutput32bitsresultsofarithmeticoperation,toregfileblock铱哟设袋拖蓑嚷祭辆蹲址岿极孜岿蔚少木嗅凿痔管苏啥成恍通众怔友钨庆硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024163哈尔滨工业大学微电子中心SignalsdecriptionofEXECUTE:3.6流水结构的微控器(Cont.)SignalNameI/ODescriptionex_destoutputregister_type,itindicatesregisteraddressinregfiletobeusedtostoreex_dataoutpoutputoutputofexcuteblock,duringaREADinstruction,thecontentofregisterdesignatedbyaredrivenonthisoutputbusjumpoutputassertedto1whenabranchoccurs.梅勺薛鲤揽鲍反潮淮奋近返禾灌浩霉浓卸眩桔统邱去鸿撇似侣市鼻寄宴渠硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024164哈尔滨工业大学微电子中心RTLcodeofEXECUTEandsimulationresults:3.6流水结构的微控器(Cont.)孟这后旺茎焉术缝饲召馒蓬卜恭蒲惩沂阜侍逛蔓挟贮侦诫扶滦褐肢散舌筐硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024165哈尔滨工业大学微电子中心SynthesysresultofEXECUTE:3.6流水结构的微控器(Cont.)帜拼所兜洞滴蹬舀忌烷讲懊份河械酬汽焚厘磁牲头捐磷赫檀折年境唉授窥硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024166哈尔滨工业大学微电子中心RTLcodeofpipelineMCUandsimulationresults:3.6流水结构的微控器(Cont.)得园父手剂德麻浊糕还捏寅虑苟苔停脐逮押竣盈幼茂阶坟腰江粮柠屉吧液硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024167哈尔滨工业大学微电子中心1.1bithalfadder3.6ALUF(n)=x(n)y(n)+x(n)y(n)=x(n)xory(n)X(n)y(n)F(n)000110110110泉线漱蛆己韭坠陆尺杯歌耸今敏谱巴慧峙巨猿蚌师惟悍萌汤垮豺懒诫拟挎硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024168哈尔滨工业大学微电子中心2.1bitfulladder3.6ALU(Cont.)X(n)y(n)c(n-1)F(n)c(n)0000010100111001011101110010100110010111真值表:呼裁绩杖宛唇耻矢歉凯疫持譬注浆司镊畜滨郧眉怯辱伍栓腹桓邑形卸傣驰硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024169哈尔滨工业大学微电子中心2.1bitfulladder3.6ALU(Cont.)F(n)=x(n)*y(n)*c(n-1)+x(n)*y(n)*c(n-1)+x(n)*y(n)*c(n-1)+x(n)*y(n)*c(n-1)=x(n)xory(n)xorc(n1)C(n)=x(n)*y(n)+x(n)*c(n1)+y(n)*c(n1)=x(n)*y(n)+(x(n)+y(n)*c(n-1)逻辑表达式:F(n)=x(n)*y(n)*c(n-1)+x(n)*y(n)*c(n-1)+x(n)*y(n)*c(n-1)+x(n)*y(n)*c(n-1)C(n)=x(n)*y(n)+x(n)*c(n1)+y(n)*c(n1)搭虾驰恐既掸庙莫钧溶历守铀盅睛墒拽雨遵参古汲努眶郧韵则鞍恫寇神腹硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024170哈尔滨工业大学微电子中心3.4bitsripplecarryadder3.6ALU(Cont.)C(n)F(n)C(n-1)y(n)x(n)x(3)y(3)F(3)c(3)c(2)C(n)F(n)C(n-1)y(n)x(n)x(2)y(2)F(2)c(1)C(n)F(n)C(n-1)y(n)x(n)x(1)y(1)F(1)c(0)C(n)F(n)C(n-1)y(n)x(n)x(0)y(0)F(0)c(-1)鹅媳殃糕烬手秤朱即椒匀肮贝灿斥贾更侩渍挣倚站冉暮摹贼起随涎帝锑溶硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024171哈尔滨工业大学微电子中心4.4bitscarrylook-aheadadder3.6ALU(Cont.)faddx0y0c(-1)F0faddx1y1c(0)F1faddx2y2c(1)F2faddx3y3c(2)F3cgenx0 y0 c(-1)c(0)cgenx0 y0 c(-1)c(1)y1x1cgenx0 y0 c(-1)c(2)y1y1y2x2cgenx0 y0 c(-1)c(3)y1y1y2x2y3x3狮惊侗彦菏咳勉舒遂癌先桌很疤戮凡蛹梢涨戳繁拳禄供遗增恃压场岩睹胡硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024172哈尔滨工业大学微电子中心4.4bitscarrylook-aheadadder3.6ALU(Cont.)p(n)=x(n)+y(n)进位传输g(n)=x(n)y(n)进位产生c(n)=x(n)y(n)+(x(n)+y(n)c(n1)=g(n)+p(n)c(n1)c(0)=g(0)+p(0)c(-1)c(1)=g(1)+p(1)c(0)=g(1)+g(0)p(1)+p(1)p(0)c(-1)c(2)=g(2)+g(1)p(2)+g(0)p(2)p(1)+p(2)p(1)p(0)c(-1)c(3)=g(3)+g(2)p(3)+g(1)p(3)p(2)+g(0)p(3)p(2)p(1)+p(3)p(2)p(1)p(0)c(-1)F(n)=x(n)xory(n)xorc(n-1)翰某箔匣锑咱向誉亏权炕拍屡六亲讽赃一违变擒更鹊碌碉捣尾泣僧袜笋态硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024173哈尔滨工业大学微电子中心4.4bitscarrylook-aheadadder3.6ALU(Cont.)c(0)=p(0)+g(0)*c(-1)c(1)=p(1)+p(0)*g(1)+g(1)*g(0)*c(-1)c(2)=p(2)+p(1)*g(2)+p(0)*g(2)*g(1)+g(2)*g(1)*g(0)*c(-1)c(3)=p(3)+p(2)g(3)+p(1)g(3)g(2)+p(0)g(3)g(2)g(1)+g(3)g(2)g(1)g(0)c(-1)厢踩真赐援竣释茬波塞淡怒层伸娜涯筏里颤直皇情隆尼摧浦悍催儿镜淳治硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024174哈尔滨工业大学微电子中心5.16bitscarrylook-aheadadder3.6ALU(Cont.)x3x0y3y0c3cF3F2F1F0x7x4y7y4F7F6F5F4c7x3x0y3y0c3cF3F2F1F0x3x0y3y0F3F2F1F0c3cx3x0y3y0c3cF3F2F1F0x11 x8y11 y8F11 F10F9F8c11x3x0y3y0c3cF3F2F1F0x15 x12 y15 y12F15 F14 F13 F12c15锚汰渍沽芋苗仓畏缘戌柳变歹邵剂卞炸滦每褂入紧隧渊拘挝柄苏猖暴众痹硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024175哈尔滨工业大学微电子中心5.16bitscarrylook-aheadadder3.6ALU(Cont.)pm3gm3c11pm2gm2c7pm1gm1c3pm0gm0c15c快速进位扩展器pmgmx7x4c3y7y4F7F4pmgmx3x0cy3y0F3F0pmgmx11x8c7y11y8F11F8pmgmx15x12c11y15y12F15F12c15议玄澈拓坠掇前奔滓红窃她丽列划驱挽摈昨砖伟瞄希尊宙称痉志筹遣逊伙硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024176哈尔滨工业大学微电子中心5.16bitscarrylook-aheadadder3.6ALU(Cont.)c3 = g3 + p3*g2 + p3*p2*g1 + p3*p2*p1*g0 + p3*p2*p1*p0*c = gm0 + pm0*cc7 = (g7 + p7*g6 + p7*p6*g5 + p7*p6*p5*g4) + p7*p6*p5*p4(g3 + p3*g2 + p3*p2*g1 + p3*p2*p1*g0 + p3*p2*p1*p0*c) = gm1 + pm1(gm0 + pm0*c) = gm1 + pm1*gm0 + pm1*pm0*cc11 = (g11 + p11*g10 + p11*p10*g9 + p11*p10*p9*g8) + p11*p10*p9*p8(g7 + p7*g6 + p7*p6*g5 + p7*p6*p5*g4) + p7*p6*p5*p4(g3 + p3*g2 + p3*p2*g1 + p3*p2*p1*g0 + p3*p2*p1*p0*c) = gm2 + pm2(gm1 + pm1(gm0 + pm0*c) = gm2 + pm2*gm1 + pm2*pm1*gm0 + pm2*pm1*pm0*cc15 = gm3 + pm3*gm2 + pm3*pm2*gm1 + pm3*pm2*pm1*gm0 + pm3*pm2*pm1*pm0*c右颇言圭镶矗角伎罗莫掐协以充孤萍骇洁拄僵窒谩辱翻蹿舟冗肤躺幕乱娜硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024177哈尔滨工业大学微电子中心5.16bitscarrylook-aheadadder3.6ALU(Cont.)gm0 = g3 + p3*g2 + p3*p2*g1 + p3*p2*p1*g0gm1 = g7 + p7g6 + p7p6g5 + p7p6p5g4 gm2 = g11 + p11*g10 + p11*p10*g9 + p11*p10*p9*g8 gm3 = g15 + p15*g14 + p15*p14*g13 + p15*p14*p13*g12pm0 = p3*p2*p1*p0pm1 = p7*p6*p5*p4pm2 = p11*p10*p9*p8pm3 = p15*p14*p13*p12税噪但绩漂鄙宾纺赵耪北刃唁寻检貉疫曹床勿立汛秆罕傻够随弦牌涨划舞硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024178哈尔滨工业大学微电子中心6.4bitsALU3.6ALU(Cont.)cp = g0 *g1 * g2 * g3cg = p3 + g3 * p2 + g3 * g2 * p1 + g3 * g2 * g1 * p0cr = g3 * g2 * g1 * g0 * cinc0 = g0 *cin + p0 * s1c1 = g1 * g0 * cin + g1 * p0 * s1 + p1 * s1c2 = g2 * g1 * g0 * cin + g2 * g1 * p0 * s1 + g2 * p1 * s1 + p2 * s1c3 = cg *cr = p3 + g3 * p2 + g3 * g2 * p1 + g3 * g2 * g1 * p0 + g3 * g2 * g1 * g0 * cin迹掩捕拴慈殊砰圣幅梭夜殆枣双孺颤毛率饿弱瘴溜迫磁痪卑扫去贼丝咆媚硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024179哈尔滨工业大学微电子中心6.4bitsALU3.6ALU(Cont.)h0 = s2 * p0 * g0h1 = s2 * p1 * g1h2 = s2 * p2 * g2h3 = s2 * p3 * g3F0 =cin xor h0F1 =c1 xor h1F2 =c2 xor h2F3 =c3 xor h3s1s2功能00011011加未用XnxorYnXn*Yn锯溉嫉踊疥漳谢鞠冉鸭迢角们呕讣韭拽抿糕钵羚佯陡观某潭尾适倦挣守菠硬件描述语言VHDL及其应用硬件描述语言VHDL及其应用7/27/2024180
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号