Verilog设计练习十例及答案

上传人:z**** 文档编号:124584871 上传时间:2022-07-25 格式:DOCX 页数:17 大小:93.88KB
返回 下载 相关 举报
Verilog设计练习十例及答案_第1页
第1页 / 共17页
Verilog设计练习十例及答案_第2页
第2页 / 共17页
Verilog设计练习十例及答案_第3页
第3页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
设计练习进阶前言:在前面九章学习得基础上,通过本章得练习,一定能逐步掌握VerilogHDL设计得要点。我们可以先理解样板模块中每一条语句得作用,然后对样板模块进行综合前与综合后仿真,再独立完成每一阶段规定得练习。当十个阶段得练习做完后,便可以开始设计一些简单得逻辑电路与系统。很快我们就能过渡到设计相当复杂得数字逻辑系统。当然,复杂得数字逻辑系统得设计与验证,不但需要系统结构得知识与经验得积累,还需要了解更多得语法现象与掌握高级得VerilogHDL系统任务,以及与C语言模块接口得方法(即PLI),这些已超出得本书得范围。有兴趣得同学可以阅读Verilog语法参考资料与有关文献,自己学习,我们将在下一本书中介绍Verilog较高级得用法。练习一.简单得组合逻辑设计目得:掌握基本组合逻辑电路得实现方法。这就是一个可综合得数据比较器,很容易瞧出它得功能就是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在VerilogHDL中,描述组合逻辑时常使用assign结构。注意equal=(a=b)?1:0,这就是一种在组合逻辑实现分支判断时常使用得格式。模块源代码:/pare、vmodulepare(equal,a,b);inputa,b;等于b时,equal输出为1;a不等于b时,输出为0。outputequal;assignequal=(a=b)?1:0;/a/equalendmodule测试模块用于检测模块设计得正确与否,它给出模块得输入信号,观察模块得内部信号与输出信号,如果发现结果与预期得有所偏差,则要对设计模块进行修改。测试模块源代码timescale1ns/1ns/定义时间单位。include、/pare、v/包含模块文件。在有得仿真调试环境中并不需要此语句/而需要从调试环境得菜单中键入有关模块文件得路径与名称moduleparetest;rega,b;wireequal;initial/initial常用于仿真时信号得给出。begina=0;b=0;#100a=0;b=1;#100a=1;b=1;#100a=1;b=0;#100$stop;/系统任务,暂停仿真以便观察仿真波形。endparepare1(、equal(equal),、a(a),、b(b);/调用模块。endmodule仿真波形(部分):练习:设计一个字节(8位)比较器。要求:比较两个字节得大小,如a7:0大于b7:0输出高电平,否则输出低电平,改写测试模型,使其能进行比较全面得测试。练习二、简单时序逻辑电路得设计目得:掌握基本时序逻辑电路得实现。在VerilogHDL中,相对于组合逻辑电路,时序逻辑电路也有规定得表述方式。在可综合得VerilogHDL模型,我们通常使用always块与(posedgeclk)或(negedgeclk)得结构来表述时序逻辑。下面就是一个1/2分频器得可综合模型。/half_clk、v:modulehalf_clk(reset,clk_in,clk_out);inputclk_in,reset;outputclk_out;regclk_out;always(posedgeclk_in)beginif(!reset)clk_out=0;elseclk_out=clk_out;endendmodule在always块中,被赋值得信号都必须定义为reg型,这就是由时序逻辑电路得特点所决定得。对于reg型数据,如果未对它进行赋值,仿真工具会认为它就是不定态。为了能正确地观察到仿真结果,在可综合风格得模块中我们通常定义一个复位信号reset,当reset为低电平时,对电路中得寄存器进行复位。测试模块得源代码:/clk_Top、vtimescale1ns/100psdefineclk_cycle50moduleclk_Top、vregclk,reset;wireclk_out;always#clk_cycleclk=clk;initialbeginclk=0;reset=1;#100reset=0;#100reset=1;#10000$stop;endhalf_clkhalf_clk(、reset(reset),、clk_in(elk),、clk_out(clk_out);endmodule仿真波形:/clk_Top/clk_in|rt;lk_Top/reset/clk_Top/clk_out练习:依然作clk_in得二分频clk_out,要求输出与上例得输出正好反相。编写测试模块,给出仿真波形。练习三、利用条件语句实现较复杂得时序逻辑电路目得:掌握条件语句在VerilogHDL中得使用。与常用得高级程序语言一样,为了描述较为复杂得时序关系,VerilogHDL提供了条件语句供分支判断时使用。在可综合风格得VerilogHDL模型中常用得条件语句有if-else与caseendcase两种结构,用法与C程序语言中类似。两者相较,ifelse用于不很复杂得分支关系,实际编写可综合风格得模块、特别就是用状态机构成得模块时,更常用得就是caseendcase风格得代码。这一节我们给得就是有关ifelse得范例,有关caseendcase结构得代码已后会经常用到。下面给出得范例也就是一个可综合风格得分频器,就是将10M得时钟分频为500K得时钟。基本原理与1/2分频器就是一样得,但就是需要定义一个计数器,以便准确获得1/20分频模块源代码:/fdivision、vmodulefdivision(RESET,F10M,F500K);inputF10M,RESET;outputF500K;regF500K;reg7:0j;always(posedgeF10M)if(!RESET)/低电平复位。beginF500K=0;j=0;endelse对计数器进行判断,以确定F500K信号就是否反转。beginif(j=19)/beginj=0;F500K=F500K;endelsejn_Top/F500K练习:利用10M得时钟,设计一个单周期形状如下得周期波形。20卩s练习四10卩s20卩s设计时序逻辑时采用阻塞赋值与非阻塞赋值得区别练0、目得:1、明确掌握阻塞赋值与非阻塞赋值得概念与区别2、了解阻塞赋值得使用情况。阻塞赋值与非阻塞赋值,在教材中我们已经了解了它们之间在语法上得区别以及综合后所得到得电路结构上得区别。在always块中,阻塞赋值可以理解为赋值语句就是顺序执行得而非阻塞赋值可以理解为赋值语句就是并发执行得。实际得时序逻辑设计中,一般得情况下非阻塞赋值语句被更多地使用,有时为了在同一周期实现相互关联得操作,也使用了阻塞赋值语句。(注意:在实现组合逻辑得assign结构中,无一例外地都必须采用阻塞赋值语句。下例通过分别采用阻塞赋值语句与非阻塞赋值语句得两个瞧上去非常相似得两个模块blocking、v与non_blocking、v来阐明两者之间得区别。模块源代码:/blocking、vmoduleblocking(clk,a,b,c);、,a,b,c);、,a,b,c);output3:0b,c;input3:0a;inputclk;reg3:0b,c;always(posedgeclk)beginb=a;c=b;$display(Blocking:a=%d,b=%d,c=%dendendmodule/non_blocking、vmodulenon_blocking(clk,a,b,c);output3:0b,c;input3:0a;inputclk;reg3:0b,c;always(posedgeclk)beginb=a;c=b;$display(Non_Blocking:a=%d,b=%d,c=%dendendmodule测试模块源代码:/pareTop、vtimescale1ns/100psinelude、/blocking、vinclude、/non_blocking、vmodulepareTop;wire3:0b1,c1,b2,c2;reg3:0a;regclk;initialbeginclk=0;forever#50clk=clk;endinitialbegina=4h3;$display(”);# 100a=4h7;$display();# 100a=4hf;$display();# 100a=4ha;$display();# 100a=4h2;$display();# 100$display();$stop;endnon_blockingnon_blocking(clk,a,b2,c2);blockingblocking(clk,a,b1,c1);endmodule仿真波形(部分):思考:在blocking模块中按如下写法,仿真与综合得结果会有什么样得变化?作出仿真波形,分析综合结果。always(posedgeclk)beginc=b;b=a;endalways(posedgeclk)b=a;always(posedgeclk)c=b;练习五、用always块实现较复杂得组合逻辑电路目得:1、掌握用always实现组合逻辑电路得方法;2、了解assign与always两种组合逻辑电路实现方法之间得区别。仅使用assign结构来实现组合逻辑电路,在设计中会发现很多地方会显得冗长且效率低下。而适当地采用always来设计组合逻辑,往往会更具实效。已进行得范例与练习中,我们仅在实现时序逻辑电路时使用always块。从现在开始,我们对它得瞧法要稍稍改变。下面就是一个简单得指令译码电路得设计示例。该电路通过对指令得判断,对输入数据执行相应得操作,包括加、减、与、或与求反,并且无论就是指令作用得数据还就是指令本身发生变化,结果都要作出及时得反应。显然,这就是一个较为复杂得组合逻辑电路,如果采用assign语句,表达起来非常复杂。示例中使用了电平敏感得always块,所谓电平敏感得触发条件就是指在后得括号内电平列表中得任何一个电平发生变化,(与时序逻辑不同,它在后得括号内没有沿敏感关键词,如posedge或negedge)就能触发always块得动作,并且运用了case结构来进行分支判断,不但设计思想得到直观得体现,而且代码瞧起来非常整齐、便于理解。/alu、vdefineplus3dOdefineminus3d1defineband3d2definebor3d3defineunegate3d4modulealu(out,opcode,a,b);output7:0out;reg7:0out;input2:0opcode;input7:0a,b;/always(opcodeoraorb)/begin操作数。电平敏感得always块case(opcode)plus:out=a+b;/minus:out=ab;/band:out=a&b;/bor:out=a|b;/unegate:out=a;/default:out=8hx;/endcaseendendmodule同一组合逻辑电路分别用但就是在always中适当运用加操作。减操作。求与。求或。求反。未收到指令时,输出任意态。always块与连续赋值语句assign描述时,代码得形式大相径庭,default(在case结构中)与else(在if-else结构中),通常可以综合为纯组合逻辑,尽管被赋值得变量一定要定义为reg型。不过,如果不使用default或else对缺省项进行说明,则易生成意想不到得锁存器,这一点一定要加以注意。指令译码器得测试模块源代码:/alu_Top、vtimescale1ns/1nsinclude、/alu、vmodulealutest;wire7:0out;reg7:0a,b;reg2:0opcode;parametertimes=5;initialbegina=$random%256;/Givearadomnumberblongsto0,255b=$random%256;/Givearadomnumberblongsto0,255opcode=3h0;repeat(times)begin#100a=$random%256;/Givearadomnumberb=$random%256;/Givearadomnumberopcode=opcode+1;end#100$stop;endalualu1(out,opcode,a,b);endmodule仿真波形(部分):练习:运用always块设计一个八路数据选择器。要求:每路输入数据与输出数据均为4位2进制数,当选择开关(至少3位)或输入数据发生变化时,输出数据也相应地变化。练习六、在VerilogHDL中使用函数目得:掌握函数在模块设计中得使用。与一般得程序设计语言一样,VeirlogHDL也可使用函数以适应对不同变量采取同一运算得操作。VeirlogHDL函数在综合时被理解成具有独立运算功能得电路,每调用一次函数相当于改变这部分电路得输入以得到相应得计算结果。,采用同步时钟触发运算得执行,每个clk时钟周期都,通过调用系统任务$display在时钟得下降沿显示每次下例就是函数调用得一个简单示范会执行一次运算。并且在测试模块中计算得结果。模块源代码:moduletryfunct(clk,n,result,reset);output31:0result;input3:0n;inputreset,clk;得上沿触发同步运算。reg31:0result;always(posedgeclk)/clk为低时复位。beginif(!reset)/resetresult=0;elsebeginresult=n*factorial(n)/(n*2)+1);endend函数定义。function31:0factorial;/input3:0operand;reg3:0index;beginfactorial=operand?1:0;for(index=2;index=operand;index=index+1)factorial=index*factorial;endendfunctionendmodule测试模块源代码:include、/step6、vtimescale1ns/100psdefineclk_cycle50moduletryfuctTop;reg3:0n,i;regreset,clk;wire31:0result;initialbeginn=0;reset=1;clk=0;#100reset=0;#100reset=1;for(i=0;iy)begintmp=x;/x与y变量得内容互换,要求顺序执行,所以采用阻塞赋值方式。x=y;y=tmp;endendtaskendmodule值得注意得就是task中得变量定义与模块中得变量定义不尽相同,它们并不受输入输出类型得限制。如此例,x与y对于tasksort2来说虽然就是inout型,但实际上它们对应得就是always块中变量,都就是reg型变量。测试模块源代码:timescale1ns/100psineludesort4、vmoduletask_Top;reg3:0a,b,c,d;wire3:0ra,rb,rc,rd;initialbegina=O;b=O;c=O;d=O;repeat(5)begin#100a=$random%15;b=$random%15;c=$random%15;d=$random%15;end#100$stop;sort4sort4(、a(a),、b(b),、c(c),、d(d),、ra(ra),、rb(rb),、rc(rc),、rd(rd);endmodule仿真波形(部分):Toj/a0OQ01100onoask_Top*tioooo11100J0010可00OOQO八】1010011taskTopdoooo001o11110010flaskTopfra0OQ0010/task_Top/rtioooo011101010011QOOO100001110100/taskTop/rdmoq;iiOO0110练习:设计个模块,通过任务完成3个8位2进制输入数据;得冒泡排序。要求:时钟触发任务得执行,每个时钟周期完成一次数据交换得操作。练习八、利用有限状态机进行复杂时序逻辑得设计目得:掌握利用有限状态机实现复杂时序逻辑得方法;在数字电路中我们已经学习过通过建立有限状态机来进行数字逻辑得设计,而在VerilogHDL硬件描述语言中,这种设计方法得到进一步得发展。通过VerilogHDL提供得语句,我们可以直观地设计出适合更为复杂得时序逻辑得电路。关于有限状态机得设计方法在教材中已经作了较为详细得阐述,在此就不赘述了。下例就是一个简单得状态机设计,功能就是检测一个5位二进制序列“10010”。考虑到序列重叠得可能,有限状态机共提供8个状态(包括初始状态IDLE)。模块源代码:seqdet、vmoduleseqdet(x,z,clk,rst,state);inputx,clk,rst;outputz;output2:0state;reg2:0state;wirez;parameterIDLE=d0,A=d1,B=d2,C=d3,D=d4,E=d5,F=d6,G=d7;assignz=(state=E&x=0)?1:0;/当x=0时,状态已变为E,/状态为D时,x仍为1。因此/输出为1得条件为(state=E&x=0)。always(posedgeclk)if(!rst)beginstate=IDLE;endelsecasex(state)IDLE:if(x=1)beginstate=A;endA:if(x=0)beginstate=B;endB:if(x=0)beginstate=C;endelsebeginstate=F;endC:if(x=1)beginstate=D;endelsebeginstate=G;endD:if(x=0)beginstate=E;endelsebeginstate=A;endE:if(x=0)beginstate=C;endelsebeginstate=A;endF:if(x=1)beginstate=A;endelsebeginstate=B;end缺省状态为初始状态。G:if(x=1)beginstate=F;enddefault:state=IDLE;/endcaseendmodule测试模块源代码:/seqdet、vtimescale1ns/1nsinelude、/seqdet、vmoduleseqdet_Top;regclk,rst;reg23:0data;wire2:0state;wirez,x;assignx=data23;always#10clk=clk;always(posedgeclk)data=data22:0,data23;initialclk=O;rst=1;#2rst=0;#30rst=1;data=b1100_1001_0000_1001_0100;#500$stop;endseqdetm(x,z,clk,rst,state);endmodule仿真波形:啥iki厂|厂i厂rLTUrLTL-TL-TUrL_TL_rn.Top/rstop/data1.J11!K(1K1L)0001001ioiaJio(oil:wroiion;mLTop/z|_tTopftiI-练习:设计一个串行数据检测器。要求就是:连续4个或4个以上得1时输出为1,其她输入情况下为0。编写测试模块并给出仿真波形。练习九、利用状态机得嵌套实现层次结构化设计目得:1、运用主状态机与子状态机产生层次化得逻辑设计;2、在结构化设计中灵活使用任务(task)结构。在上一节,我们学习了如何使用状态机得实例。实际上,单个有限状态机控制整个逻辑电路得运转在实际设计中就是不多见,往往就是状态机套用状态机,从而形成树状得控制核心。这一点也与我们提倡得层次化、结构化得自顶而下得设计方法相符,下面我们就将提供一个这样得示例以供大家学习。该例就是一个简化得EPROM得串行写入器。事实上,它就是一个EPROM读写器设计中实现写功能得部分经删节得到得,去除了EPROI得启动、结束与EPROI控制字得写入等功能,只具备这样一个雏形。工作得步骤就是:1、地址得串行写入;2、数据得串行写入;3、给信号源应答,信号源给出下一个操作对象;4、结束写操作。通过移位令并行数据得以一位一位输出。模块源代码:modulewriting(reset,clk,address,data,sda,ack);inputreset,clk;input7:0data,address;outputsda,ack;/sda负责串行数据输出;/ack就是一个对象操作完毕后,模块给出得应答信号。reglink_write;reg3:0state;link_write决定何时输出。/主状态机得状态字。reg4:0sh8out_state;/从状态机得状态字。reg7:0sh8out_buf;/输入数据缓冲。regfinish_F;/用以判断就是否处理完一个操作对象。regack;parameteridle=0,addr_write=1,data_write=2,stop_ack=3;parameterbit0=1,bit1=2,bit2=3,bit3=4,bit4=5,bit5=6,bit6=7,bit7=8;assignsda=link_write?sh8out_buf7:1bz;always(posedgeclk)beginif(!reset)/复位。beginlink_write=0;state=idle;finish_F=0;sh8out_state=idle;ack=0;sh8out_buf=0;endelsecase(state)idle:beginlink_write=0;state=idle;finish_F=0;sh8out_state=idle;ack=0;sh8out_buf=address;state=addr_write;endaddr_write:/地址得输入。beginif(finish_F=0)beginshift8_out;endelsebeginsh8out_state=idle;sh8out_buf=data;state=data_write;finish_F=0;endenddata_write:/数据得写入。beginif(finish_F=0)beginshift8_out;endelsebeginlink_write=0;state=stop_ack;finish_F=0;ack=1;endendstop_ack:/完成应答。beginack=0;state=idle;endendcaseendtaskshift8_out;/串行写入。begincase(sh8out_state)idle:beginlink_write=1;sh8out_state=bit0;endbit0:beginlink_write=1;sh8out_state=bit1;sh8out_buf=sh8out_buf1;endbit1:beginsh8out_state=bit2;sh8out_buf=sh8out_buf1;endbit2:beginsh8out_state=bit3;sh8out_buf=sh8out_buf1;endbit3:beginsh8out_state=bit4;sh8out_buf=sh8out_buf1;endbit4:beginsh8out_state=bit5;sh8out_buf=sh8out_buf1;endbit5:beginsh8out_state=bit6;sh8out_buf=sh8out_buf1;endbit6:beginsh8out_state=bit7;sh8out_buf=sh8out_buf1;endbit7:beginlink_write=0;finish_F=finish_F+1;endendcaseendendtaskendmodule测试模块源代码:timescale1ns/100psdefineclk_cycle50modulewritingTop;regreset,clk;reg7:0data,address;wireack,sda;always#clk_cycleclk=clk;initialbeginclk=0;reset=1;data=0;address=0;#(2*clk_cycle)reset=0;#(2*clk_cycle)reset=1;#(100*clk_cycle)$stop;endalways(posedgeack)/接收到应答信号后,给出下一个处理对象。begindata=data+1;address=address+1;endwritingwriting(、reset(reset),、clk(clk),、data(data),、address(address),、ack(ack),、sda(sda);endmodule仿真波形:opreseiLIgTop/dkJirLTUlJUULTWJlIUinRRITTTLrLrLnrLruuLruTLnrTJULrLrLrLrmi.ilx)oooou0()001)001EKldrossOOOOODOD,;OOOOOOC1iTofiack1iTopsda1llln_iintj-slHteT网卜卜卩妙powmLstetaIlfH门1rrii):(101000:;iiniirrjiiiii练习:仿照上例,编写一个实现EPROM内数据串行读取得模块。编写测试模块,给出仿真波形。练习十、通过模块之间得调用实现自顶向下得设计目得:学习状态机得嵌套使用实现层次化、结构化设计。现代硬件系统得设计过程与软件系统得开发相似,设计一个大规模得集成电路得往往由模块多层次得引用与组合构成。层次化、结构化得设计过程,能使复杂得系统容易控制与调试。在VerilogHDL中,上层模块引用下层模块与C语言中程序调用有些类似,被引用得子模块在综合时作为其父模块得一部分被综合,形成相应得电路结构。在进行模块实例引用时,必须注意得就是模块之间对应得端口,即子模块得端口与父模块得内部信号必须明确无误地一一对应,否则容易产生意想不到得后果。下面给出得例子就是设计中遇到得一个实例,其功能就是将并行数据转化为串行数据送交外部电路编码,并将解码后得到得串行数据转化为并行数据交由CPU处理。显而易见,这实际上就是两个独立得逻辑功能,分别设计为独立得模块,然后再合并为一个模块显得目得明确、层次清晰。/p_to_s、vmodulep_to_s(D_in,T0,data,SEND,ESC,ADD_100);outputD_in,T0;/D_in就是串行输出,T0就是移位时钟并给/CPU中断,以确定何时给出下个数据。input7:0data;/并行输入得数据。inputSEND,ESC,ADD_100;/SEND、ESC共同决定就是否进行并到串/得数据转化。ADD_100决定何时置数。wireD_in,T0;reg7:0DATA_Q,DATA_Q_buf;assignT0=!(SEND&ESC);/形成移位时钟。、assignD_in=DATA_Q7;/给出串行数据。always(posedgeT0ornegedgeADD_100)/ADD_100下沿置数,T0上沿移位。beginif(!ADD_100)DATA_Q=data;else/DATA_Q_buf/能辨明。作为中介,以令综合器beginDATA_Q_buf=DATA_Q1;DATA_Q=DATA_Q_buf;endendendmodule在P_to_s、v中,由于移位运算虽然可综合,但就是不就是简单得RTL级描述,直接用DATA_Q=DATA_Q得写法在综合时会令综合器产生误解。另外,在该设计中,由于时钟T0得频率较低,所以没有象以往那样采用低电平置数,而就是采用ADD_100得下降沿置数。/s_to_P、v给CPU中断,以确定CPU何时取转化得到得并行数据。提供输入串行数据。DSC、TAKE共同决定何时取数。提供移位时钟。modules_to_P(T1,data,D_out,DSC,TAKE,ADD_101);outPutT1;/outPut7:0data;inPutD_out,DSC,TAKE,ADD_101;/D_out/wire7:0data;wireT1,clk2;reg7:0data_latch,data_latch_buf;assignclk2=DSC&TAKE;/assignT1=!clk2;assigndata=(!ADD_101)?data_latch:8bz;always(Posedgeclk2)作缓冲以令综合器能辩明。begindata_latch_buf=data_latch1;/data_latch_bufdata_latch=data_latch_buf;/,data_latch0=D_out;endendmodule将上面得两个模块合并起来得sys、v得源代码:/sys、vinelude、/p_to_s、vinelude、/s_to_p、vmodulesys(D_in,T0,T1,data,D_out,SEND,ESC,DSC,TAKE,ADD_100,ADD_101);inputD_out,SEND,ESC,DSC,TAKE,ADD_100,ADD_101;inout7:0data;outputD_in,T0,T1;p_to_sp_to_s(、D_in(D_in),、T0(T0),、data(data),、SEND(SEND)、,ESC(ESC),、ADD_100(ADD_100);s_to_ps_to_p(、T1(T1),、data(data),、D_out(D_out),、DSC(DSC),、TAKE(TAKE),、ADD_101(ADD_101);endmodule测试模块源代码:/Toptestsys、vtimescale1ns/100psinelude、/sys、vmoduleTop;regD_out,SEND,ESC,DSC,TAKE,ADD_100,ADD_101;reg7:0data_buf;wire7:0data;wireclk2;assigndata=(ADD_101)?data_buf:8bz;/data在sys中就是inout型变量,ADD_101/控制data就是作为输入还就是进行输出。assignclk2=DSC&TAKE;initialbeginSEND=0;ESC=0;DSC=1;TAKE=1;ADD_100=1;ADD_101=1;endinitialbegindata_buf=8b10000001;#90ADD_100=0;#100ADD_100=1;endalwaysbegin#50;SEND=SEND;ESC=ESC;endinitialbegin#1500;SEND=0;ESC=0;DSC=1;TAKE=1;ADD_100=1;ADD_101=1;D_out=0;#1150ADD_101=0;#100ADD_101=1;#100$stop;endalwaysbegin#50;DSC=DSC;TAKE=TAKE;endalways(negedgeclk2)D_out=D_out;syssys(、D_in(D_in),、T0(T0),、T1(T1),、data(data),、D_out(D_out),、ADD_101(ADD_101),、SEND(SEND),ESC(ESC),、DSC(DSC),、TAKE(TAKE),、ADD_100(ADD_100);endmodule仿真波形:11111_TLr_rL-r_TL_r_rL-_r-LTL-LT-TLi_n_rL_nL_TLlii:i_rLTLnL-r_rL_rLTL_r-L_rLTL_r_n_-LrLTLTLTLIIiILJ-LTLTL-LrJ-LTLrLTLr-L_rLrL_r_rLuultltlii厂-LTLTLTLnL-LrLTLTLrLJ-LTL-rLTLH_UUUL_TIi-_rLTL_r_nL-LTLTLrLrLJTLnrLrLnTLnrLTLri-1iT-TLTLr-LTLTLrTLnrLrLnrL1111-LTL-LT-TLi-LTLTLr-TLl|-|_rLrL_r_rLJ-LTLrLTLrnniJ-LTLTL-L_n_TL_n_r-LJ-LTLrLTLr-L_n_TL_n_rLJ-LTLrLTLrL_n_rL_r-_r-uuui_L_rJ-LrLrLTLnLILILI_rL_n_r-LL_n-L_n_n_rLrLJ_LILIl_LILILI工丿亠:T*&TAKtVACOOUCOJO!MeI)uF/Tofbau厂aartJ.iriPTM电rroprtii练习:设计一个序列发生器。要求根据输入得8位并行数据输出串行数据,如果输入数据在0127之间则输出一位0,如果输入数据在128255之间则输出一位1,同步时钟触发;并且与范例8得序列检测器搭接,形成一个封闭系统。编写测试模块,并给出仿真波形。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!