ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:477.50KB ,
资源ID:19812644      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19812644.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ASIC设计Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ASIC设计Word文件下载.docx

1、1.根据以下功能描述设计一个交通信号灯控制器: 该交通信号灯控制器用于控制一条主干道与一条乡村公路的交叉口的交通,它必须具有下面的功能: 1)由于主干道上来往的车辆很多,因此控制主干道的交通信号具有最高优先级,在默认情况下主干道的绿灯点亮; 2)乡村公路间断性地有车经过,有车来时乡村公路的交通灯必须变为绿灯,只需维持一段足够长的时间,以便让车通过; 3)只要乡村公路上不再有车辆,那么乡村公路上的绿灯马上变为黄灯,然后变为红灯;同时,主干道上的绿灯重新点亮; 4)一个传感器用于监视乡村公路上是否有车等待,它向控制器输入信号x;如果x=1,则表示有车等待,否则x=0; 5)各个状态装换时,具有一定

2、的延迟,这些延迟必须能够控制。2.有限状态机设计图S0:city绿灯,country红灯 s1:city黄灯,country红灯 s2:city红灯,country绿灯 s3:city红灯,country绿灯 s4:city绿灯,country黄灯3.编写相应的验证程序,对编写的行为级模型进行验证,要求涵盖到状态机所有可能的装换。实验结果:City为城市交通灯,0表示绿灯,1表示黄灯,3表示红灯Country为乡村交通灯,0表示绿灯,1表示黄灯,3表示红灯实验代码:1:非阻塞赋值方式:赋值方式为b=a,块结束后才完成赋值操作,b的值并不是在赋值语句执行完之后立刻就改变的,常用语编写可综合模块

3、阻塞赋值方式:赋值方式为b=a,赋值语句执行完后块才结束,b的值在赋值语句执行完后立刻就改变的,执行结果可能与预计的不同2:city绿country红,city黄country红,city红country绿,city红country黄,city绿country红,其中在city红country绿的状态中加入了三个周期的延时以保障乡村道路的同行。本次实验中,考虑到状态的装换之间需要一定的延时,所以采用了非阻塞赋值的方式对程序进行编写,但是刚开始的时候country绿灯的延时不够,只能有一个时钟周期,所以加入个一个count的判断语句将延时改为了三个时钟周期,实验的重点在于弄清楚各种状态之间是如何

4、装换的,其次就是采用了边沿触发的方式对状态进行控制以实现延时的控制和状态的转换,通过这次实验,对于非阻塞赋值方式形成了具体的了解。 实验五 NRZ/HDB3码制变换的功能与时序验证1、掌握复杂时序逻辑电路设计;2、掌握RTL级设计的基本要求;3、掌握验证程序的设计方法与技巧;设计思路:编码部分:在实际电路设计时,先在纯粹的数字电路下完成插“V”的操作,再完成插“B”的操作;然后再将单极性变成双极性。这样可以在数字电路中实现,且降低寄存器需求。因为“V”、“B”是认为标识的符号,所以在具体电路中,需做以下替换:0-00,1-01,V-11, B-10。译码部分:根据编码规则,破坏点V脉冲与前一个

5、脉冲同极性。因此可从所接受的信码中找到V码,然后根据加取代节的原则,V码与前面的三位码必然是取代码,需要全部复原为四连0。只要找到V码,不管V码前是两个“0”码,一律把取代节清零,完成了去除V和去除B功能,进而得到原二元信码序列。可实现HDB3译码,HDB3译码器包括双/单极性变换、V码检测、去除V去除B四部分组成。Trans.v(BP,BN转换模块)module trans(clk,rst,BP,BN,P,N);input clk,BP,BN;input rst;output 1:0P,N;reg 1:0 P;0 N;initial beginP=0;N=0;end always (rst)

6、 begin P=2b00; N endalways (posedge clk)beginif (BP=0) Pelse Pb01;if (BN=0) Nelse Nendmodulefindv.vmodule findv(clk,P,N,out1,out2);input clk;input 1:0 P,N;0out1,out2;0 counter1;0 counter2;0 out1;0 out2;initialcounter1=2out1=2out2=2if(P=2b01)counter1=counter1+1;if(counter1=2b10)begin out1=2b11;else b

7、egin out1=2end if (N=2b01) counter1=2if(N=2counter2=counter2+1;if(counter2=2begin out2=2counter2=2else begin out2=2if (P=2b01) counter2=2Jia.v(信号叠加模块)module jia(in1,in2,clk,out0);0 in1;0 in2;output out0;0 a;0 b;a=2b=2a=in1;b=in2;assign out0=a+b;chvb.vmodule chvb(in,clk,out);/input rst;0 in;0 out;0 d

8、3:0;/always (rst) /begin out /endd3=2d2=2d1=2d0=2d3=d2;d2=d1;d1=d0;d0=in;if(d0=2b11) d0 d1 d2 d3assignout=d3;Yima.v(顶层模块)module yima(clk,BP,BN,out3,rst);input clk,rst,BP,BN;output out3;wire 1:0a,b;wire out3;trans u1(.clk(clk),.BP(BP),.BN(BN),.P(P),.N(N),.rst(rst);findv u2(.clk(clk),.P(P),.N(N),.out1

9、(out1),.out2(out2);chvb u3(.clk(clk),.in(out1),.out(a);chvb u4(.clk(clk),.in(out2),.out(b);jia u5(.clk(clk),.in1(a),.in2(b),.out0(out3);test1.vtimescale 1ns/1psmodule test1();reg clk,BN,BP,rst;$dumpvars(2,test1);clk=0;BN=0;BP=0;rst=1;#20 rst=0;#20 BN=1;#20 BP=1;#20 BP=0;BN=1;#40 BN=1;#20 BN=0;BP=1;#

10、60 BP=1;/#140 BP=1;/#20 BP=0;/#60 BP=1;/#20 BN=1;/#20 BN=0;/#40 BN=1;/#40 BP=1;/#20 BP=1;#500 $finish;yima dut(.clk(clk),.BP(BP),.BN(BN),.out3(out3);always#10 clk=clk;EndmoduleFindv.v模块是用于+V/-V检测:(1)+V检测模块为了方便起见,设从正整流电路输出的信号为+B,从负整流电路输出的信号为-B。+V码检测模块-B的控制下,对输入的+B进行检测。其原理是:当+B的上升沿到来时,对输入的+B脉冲进行计数,当计数

11、值等于2时,输出一个脉冲作为+V脉冲,同时计数器清零,而且计数期间,一旦有-B信号为“1”电平时,立即对计数器清零,计数器重新从零开始计数。这是因为在两个+B脉冲之间,存在-B脉冲,说明第二个+B脉冲不是+V码,而只有在连续两个+B脉冲之间无-B脉冲,才能说明这两个+B脉冲在HDB3码中,是真正同极性的于是就可以判定第二个+B脉冲实际上是+V码,达到检测+V码的目的。(2)-V检测模块V码检测原理与+V码检测的类似。所不同的是,-V码检测电路在+B控制下,对来自-B信号进行计数和检测、判定,若检测到-V码,则输出到-V码信号Chvb.v模块用于去除V和B:去除V去除B模块有三个输入信号,即时钟

12、信号、V码信号和来自正、负整流输出的和路信号。由于该和路信号可能包含有B脉冲和V脉冲,因此需要在chvb.v模块中,去除V和B脉冲。用V码检测模块所检测出的V码信号,去控制一个移位寄存器,若未碰到V脉冲,则整流输出合成信号在时钟的节拍下,顺利通过移位寄存器,当碰到有V脉冲时,该V脉冲将使移位寄存器清零。考虑到四连0,即V脉冲及其前面的三个码元应为0码,所以,可设置四位的移位寄存器,当V码清零时,同时将移存器中的四位码全变为0。不管是否有B脉冲,在此模块中,一并清零,因而无需另设去除B电路。另外移位四位寄存器起到延时四位时钟周期的作用,以使所检测出的V脉冲与信号流中的V脉冲位置对齐,保证清零的准

13、确性程序运行流程图:Code_b;module code_b(add_in,addb_out,clk);0 add_in;output1:0 addb_out;reg firstv;reg counter;reg1:d3=d2;d2=d1;d1=d0;d0=add_in;b11) begin counter=0;firstv=0;else if(d0=2b01) begin counter=counter+1;firstv=1;else begin firstv=1;addb_out=(counter=0)&(firstv=1)&(d0=2b11)?2b10:d3;code_v.vmodule

14、 code_v(data_in,clk,data_out,rst); input data_in; input clk; input rst; output 1:0 data_out; reg 1: integer counter; begin data_out always (posedge clk) if(data_in=1b1)begin counter=0;data_outelseif(counter=3)begin data_outcounterelse begin data_out=counter+1;polar.vmodule polar(addb_out,clk,BP,BN,r

15、st); input 1: input clk,rst; output BP,BN;0polar_out; reg BP,BN; reg even;always (rst) if(addb_out=2 begin if(even=1) begin polar_out else begin polar_out else if(addb_out=2b01 | addb_out=2 if(even=1) begin evenpolar_out else begin even=1; always (polar_out) if(polar_out=2b01)begin BP=0; else if(pol

16、ar_out=2b11)begin BP=1; else begin BP=0; endmoduleHDB.v(顶层模块)module HDB(clk,data,BP,BN,rst); input clk,data,rst; wire1:0 a,b; code_v u1(.clk(clk),.data_in(data),.data_out(a),.rst(rst); code_b u2(.clk(clk),.add_in(a),.addb_out(b); polar u3(.clk(clk),.addb_out(b),.BP(BP),.BN(BN),.rst(rst);test.vmodule

17、 test(); reg clk,data,rst; wire BP,BN; initial $dumpvars(2,test); clk=0; data=0; rst=1; #20 rst=0; /#200 data=0; #20 data=1; #20 data=0; #10 $finish; end HDB dut(.clk(clk),.data(data),.BP(BP),.BN(BN),.rst(rst); always #10 clk=clk;Code_v.v模块:实现V码的插入1、设置连“0”计数器,复位为0;2、对输入信号进行判断,如果为1则计数器复位,且输出“01”;3、如果

18、为“0”,则对“0”进行计数,如果计数值不为4,则输出“00”;4、如果计数值为“4”,则计数器复位,同时输出为“11”。Code_b.v模块:实现B码的插入1、设置对“01”的计数器counter为0,设置对“11”的计数器firstV为0;2、对输入进行判断,如果为“01”,则counter加1,仍然输出“01”;3、如果输入为“00”,输出为“00”,计数器不变;4、如果输入为“11”,firstV加1,此时如果counter为奇数,则输出仍为“11”;5、如果counter为偶数,则将counter复位,且将此处前第4个数变成“10”。 注:关键要设置四位的移位寄存器Polar.v模块

19、:实现单双极性的变换由HDB3编码规则,“V”的极性是正负交替,而“1”和“B”的极性看成一体,为正负交替的,同时“V”的极性与前面的非“0”码一致。1、设置一个极性标志even=0;2、如果输入信号为“00”,输出仍为“00”;3、输入为“01”,或“10”,如果even=1,输出“01”;如果even=0,输出为“10”,然后将even翻转;4、如果输入为“11”,判断even,如果为1,则输出“10”,如果位0,输出“01”。注意:输出后的“10”和“01”表示的不再是“1”、“V”、和“B”了,而是标识符号的正负极性。再将输出控制4选1的开关,就可以将“00”、“01”、“10”转化为0、+1和-1了。程序运行流程:NRZ HDB3译码:编码:全1 输入:1、验证程序的三要素是电路、激励和显示。/电路 Initial /激励 #20 dat

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1