Verilog语言描述常见电路结构范例精Word文件下载.docx

上传人:b****6 文档编号:8349201 上传时间:2023-05-11 格式:DOCX 页数:7 大小:16.15KB
下载 相关 举报
Verilog语言描述常见电路结构范例精Word文件下载.docx_第1页
第1页 / 共7页
Verilog语言描述常见电路结构范例精Word文件下载.docx_第2页
第2页 / 共7页
Verilog语言描述常见电路结构范例精Word文件下载.docx_第3页
第3页 / 共7页
Verilog语言描述常见电路结构范例精Word文件下载.docx_第4页
第4页 / 共7页
Verilog语言描述常见电路结构范例精Word文件下载.docx_第5页
第5页 / 共7页
Verilog语言描述常见电路结构范例精Word文件下载.docx_第6页
第6页 / 共7页
Verilog语言描述常见电路结构范例精Word文件下载.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Verilog语言描述常见电路结构范例精Word文件下载.docx

《Verilog语言描述常见电路结构范例精Word文件下载.docx》由会员分享,可在线阅读,更多相关《Verilog语言描述常见电路结构范例精Word文件下载.docx(7页珍藏版)》请在冰点文库上搜索。

Verilog语言描述常见电路结构范例精Word文件下载.docx

用Verilog描述4:

1MUX可以有如下方法:

一个if语句加多个elseif从句

嵌套if语句

case语句

always@(aorborcordorselbegin

if(sel==2'

b00y=a;

elseif(sel==2'

b01y=b;

b10y=c;

elsey=d;

if(sel[1]==0

if(sel[0]==0y=a;

elsey=b;

else

if(sel[0]==0y=c;

always@(aorborcordorselbegin

case(sel

2'

b00:

y=a;

b01:

y=b;

b10:

y=c;

b11:

y=d;

default:

endcase

八选一多路选择器

描述8:

1MUX最好使用case语句

always@(a0ora1ora2ora3ora4ora5ora6ora7orselbegin

0:

y=a0;

1:

y=a1;

2:

y=a2;

3:

y=a3;

4:

y=a4;

5:

y=a5;

6:

y=a6;

7:

y=a7;

8:

3编码器

编码器可以将多个离散的信号用编码表示出来,比如3位的编码可以表示8个信号。

下面的例子给出了三种8:

3编码器的描述方法。

always@(abegin

if(a==8'

b00000001y=0;

elseif(a==8'

b00000010y=1;

b00000100y=2;

b00001000y=3;

b00010000y=4;

b00100000y=5;

b01000000y=6;

b10000000y=7;

elsey=3'

bX;

case(a

8'

b00000001:

y=0;

b00000010:

y=1;

b00000100:

y=2;

b00001000:

y=3;

b00010000:

y=4;

b00100000:

y=5;

b01000000:

y=6;

b10000000:

y=7;

y=3'

always@(abegin

test=8'

b00000001;

y=3'

for(i=0;

i<

8;

i=i+1begin

if(a==test

y=i;

test=test<

<

1;

优先级编码器

优先级编码器是一种特殊的编码器,就是当多个输入信号同时有效时,它只输出优先级最高的信号的编码。

下面的例子给出了8:

3优先级编译器的描述方法。

valid=1;

if(a[7]y=7;

elseif(a[6]y=6;

elseif(a[5]y=5;

elseif(a[4]y=4;

elseif(a[3]y=3;

elseif(a[2]y=2;

elseif(a[1]y=1;

elseif(a[0]y=0;

elsebegin

valid=0;

bx;

casez(a

b1?

?

:

b01?

b001?

b0001?

b00001?

b000001?

b0000001?

begin

always@(aornbegin

for(i=8;

if(a[i]begin

译码器

译码器的作用恰好与编码器相反,它从编好的码中把原始信号还原出来。

下面的例子给出了三种3:

8译码器的描述方法:

if(a==0y=8'

elseif(a==1y=8'

b00000010;

elseif(a==2y=8'

b00000100;

elseif(a==3y=8'

b00001000;

elseif(a==4y=8'

b00010000;

elseif(a==5y=8'

b00100000;

elseif(a==6y=8'

b01000000;

elsey=8'

b10000000;

y=8'

always@(aornbegin

if(a==ny[i]=1;

elsey[i]=0;

比较器

比较器用于比较两个或多个输入的关系,如相等、不等、大小等。

下面的例子给出了三种6位比较器的描述方法。

always@(a1ora2ora3orb1orb2orb3begin

y1=1;

for(n=0;

n<

6;

n=n+1

if(a1[n]!

=b1[n]y1=0;

y2=0;

if(a2==b2y2=1;

if(a3==b3y3=1;

elsey3=0;

时序逻辑时序逻辑包括latch、触发器、计数器等,latch产生的主要原因是if或case语句中的条件不完整,这是要努力避免的。

D触发器always@(posedgeclkbeginif(!

rst_syny1<

=0;

elsey1<

=d1;

endalways@(posedgeclkornegedgerst_nbeginif(!

rst_ny2<

elsey2<

=d2;

rst_ny3<

elseif(rst_syny3<

elsey3<

=d3;

endalways@(posedgeclkif(eny4<

=d4;

always@(posedgeclkif(rst_syny5<

elseif(eny5<

=d5;

always@(posedgeclkornegedgerst_nif(rst_ny6<

elseif(eny6<

=d6;

计数器always@(posedgeclkornegedgerst_nbeginif(!

rst_ncounter=0;

elsebegincase({up,down}2'

counter<

=counter+1;

2'

=counter-1;

endcaseendend

有限状态机FSM由状态寄存器、下一状态逻辑和输出逻辑组成。

下面的例子给出了一个FSM的描述方法。

modulefsm1(ds,rd,go,ws,clk,rst_n;

outputds,rd;

inputgo,ws;

inputclk,rst_n;

regds,rd;

parameter[1:

0]IDLE=2'

b00,READ=2'

b01,DLY=2'

b10,DONE=2'

b11;

reg[1:

0]state,next;

always@(posedgeclkornegedgerst_nif(!

rst_nstate<

=IDLE;

elsestate<

=next;

always@(stateorgoorwsbeginnext=2'

ds=1'

b0;

rd=1'

case(stateIDLE:

if(gonext=READ;

elsenext=IDLE;

READ:

beginrd=1'

b1;

next=DLY;

endDLY:

if(wsnext=READ;

elsenext=DONE;

endDONE:

beginds=1'

next=IDLE;

endendcaseendendmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2