EDA实验报告.docx

上传人:b****8 文档编号:29414966 上传时间:2023-07-23 格式:DOCX 页数:22 大小:163.63KB
下载 相关 举报
EDA实验报告.docx_第1页
第1页 / 共22页
EDA实验报告.docx_第2页
第2页 / 共22页
EDA实验报告.docx_第3页
第3页 / 共22页
EDA实验报告.docx_第4页
第4页 / 共22页
EDA实验报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

EDA实验报告.docx

《EDA实验报告.docx》由会员分享,可在线阅读,更多相关《EDA实验报告.docx(22页珍藏版)》请在冰豆网上搜索。

EDA实验报告.docx

EDA实验报告

T1:

行为级:

modulemux41(a,b,c,d,sel,f)

input[3:

0]a,b,c,d;

input[1:

0]sel;

output[3:

0]f;

reg[3:

0]f;

always@(a,b,c,d,sel)

begin

case(sel)

2’b00:

f=a;

2’b01:

f=b;

2’b10:

f=c;

2’b11:

f=d;

endcase

end

endmodule

数据流:

modulemux41(out,s1,s0,d0,d1,d2,d3);

output[3:

0]out;

input[3:

0]d0,d1,d2,d3;

inputs1,s0;

assignout=(s1)?

(s0?

d3:

d1):

(s0?

d2:

d0);

endmodule

T2:

行为级:

moduledecode3_8(data_out,data_in,enable);

input[2:

0]data_in;

inputenable;

output[7:

0]data_out;

reg[7:

0]data_out;

always@(data_inorenable)

begin

if(enable==1)

case(data_in)

3'b000:

data_out=8'b11111110;

3'b001:

data_out=8'b11111101;

3'b010:

data_out=8'b11111011;

3'b011:

data_out=8'b11110111;

3'b100:

data_out=8'b11101111;

3'b101:

data_out=8'b11011111;

3'b110:

data_out=8'b10111111;

3'b111:

data_out=8'b01111111;

default:

data_out=8'bxxxxxxxx;

endcase

else

data_out=8'b11111111;

end

endmodule

数据流:

moduledeocde38(outcode,incode);

output[7:

0]outcode;

input[2:

0]incode;

function[7:

0]shift;

input[2:

0]in;

case(in)

3'b000:

shift=8'b11111110;

3'b001:

shift=8'b11111101;

3'b010:

shift=8'b11111011;

3'b011:

shift=8'b11110111;

3'b100:

shift=8'b11101111;

3'b101:

shift=8'b11011111;

3'b110:

shift=8'b10111111;

3'b111:

shift=8'b01111111;

default:

shift=8'bxxxxxxxx;

endcase

endfunction

assignoutcode=shift(incode);

endmodule

T3:

N=4时:

moduleadd_n(x,y,sum,co);

parametern=4;

input[n-1:

0]x,y;

output[n-1]sum;

outputco;

assign{co,sum}=x+y;

endmodule;

N=16:

moduleadd_n(x,y,sum,co)

parametern=16;

input[n-1:

0]x,y;

output[n-1]sum;

outputco;

assign{co,sum}=x+y;

endmodule;

T4:

modulecompare_n(x,y,x_gt_y,x_eq_y,x_lt_y);

parametern=8;

input[n-1:

0]x,y;

outputregx_gt_y,x_eq_y,x_lt_y;

always@(x,y)

if(x>y)

beginx_gt_y=1;x_eq_y=0;x_lt_y=0;end

elseif(x==y)

beginx_gt_y=0;x_eq_y=1;x_lt_y=0;end

else

beginx_gt_y=0;x_eq_y=0;x_lt_y=1;end

endmodule

T5:

modulealu_N(X,Y,sel,result);

parameterN=4;

input[1:

0]sel;

input[N-1:

0]X,Y;

outputreg[N-1:

0]result;

always@(X,Y,sel)

begin

case(sel)

2'b00:

result=X-Y;

2'b01:

result=X>>1;

2'b10:

result=X^Y;

2'b11:

result=X;

endcase

end

endmodule

T6:

moduleregister_n(d,q,data,en,load,reset,clk);

parametern=4;

inputen,load,reset,clk;

input[n-1:

0]d,data;

outputreg[n-1:

0]q;

reg[n-1:

0]temp;

always@(posedgeclkorposedgereset)

begin

if(reset)

temp<=0;

elseif(load)temp<=data;

elsetemp<=d;

end

always@(en,temp)

begin:

trireg3st

if(en)q<=temp;

elseq<='bz;

end

endmodule

T7:

8位左移

moduleshift_l(clk,in,q);

inputclk,in;

outputwire[7:

0]q;

reg[7:

0]temp;

always@(posedgeclk)

temp<={temp,in};

assignq=temp;

endmodule

8位右移

moduleshift_r(clk,in,q);

inputclk,in;

outputwire[7:

0]q;

reg[7:

0]temp;

always@(posedgeclk)

temp<={in,temp[3:

1]};

assignq=temp;

endmodule

8位双向移动

moduleshift_all(clk,in,q,mode);

inputclk,in,mode;

output[7:

0]q;

reg[7:

0]temp;

always@(posedgeclk)

case(mode)

1'b0:

temp<={temp,in};

1'b1:

temp<={in,temp[3:

1]};

default:

temp<={temp,in};

endcase

assignq=temp;

endmodule

8位循环:

moduleshif_f(clk,in,q,load,mode);

inputclk,mode,load,in;

output[7:

0]q;

reg[7:

0]temp;

always@(posedgeclk)

begin

if(load)

temp=in;

if(mode)//自循环左移

temp<={temp[6:

0],temp[7]};

else

temp<={temp[0],temp[7:

1]};

end

assignq=temp;

endmodule

T8:

modulecnt12(clk,rst,en,q,cout);

inputclk,rst,en;

outputreg[n-1:

0]q;

outputcout;

parametern=4;

always@(posedgerst,posedgeclk)

begin

if(rst)

q<=0;

else

if(en)

if(q==11)q<=0;

elseq<=q+1;

end

assigncout=(q==0)?

1'b1:

1'b0;

endmodule

T9:

modulerom38(rom_data,rom_addr,load);

parameterm=8,n=3;

inputload;

input[n-1:

0]rom_addr;

outputreg[m-1:

0]rom_data;

reg[m-1:

0]memory[0:

2**n];

always@(posedgeload)

begin:

init

integeri;

for(i=0;i<(2**n);i=i+1)

memory[i]=1<

end

always@(rom_addr)

rom_data=memory[rom_addr];

endmodule

T10:

moduledivf_paramater(rst,clk,en,clkout);

inputrst,clk,en;

outputclkout;

integertemp;

parametern=20,m=6;

always@(posedgeclk)

begin

if(rst)

temp<=0;

elseif(en)

if(temp==n-1)temp<=0;

elsetemp<=temp+1;

end

assignclkout=(temp

1:

0;

endmodule

T11:

moduledivf_paramater(rst,clk,en,clkout);

inputrst,clk,en;

outputclkout;

integertemp;

parametern=20,m=6;

always@(posedgeclk)

begin

if(rst)

temp<=0;

elseif(en)

if(temp==n-1)temp<=0;

elsetemp<=temp+1;

end

assignclkout=(temp

1:

0;

endmodule

T12:

例4-18

moduledivf_oddn(clk,clk_n);

inputclk;

outputclk_n;

parametern=3;

integerp,q;

regclk_p,clk_q;

always@(posedgeclk)

begin

if(p==n-1)

begin

p=0;

clk_p=~clk_p;

end

else

p=p+1;

end

always@(negedgeclk)

begin

if(q==n-1)

q=0;

else

q=q+1;

if(p==(n-1)/2)

clk_q=~clk_q;

end

assignclk_n=clk_p^clk_q;

endmodule

例4-19

moduledivf_even(clk,clk_n);

inputclk;

outputregclk_n;

parametern=6;

integerp;

always@(posedgeclk)

begin

if(p==n/2-1)

beginp=0;clk_n=~clk_n;

end

elsep=p+1;

end

endmodule

例4-20

moduledivf_paramater(rst,clk,en,clkout);

inputrst,clk,en;

outputclkout;

integertemp;

parametern=20,m=6;

always@(posedgeclk)

begin

if(rst)

temp<=0;

elseif(en)

if(temp==n-1)temp<=0;

elsetemp<=temp+1;

end

assignclkout=(temp

1:

0;

endmodule

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

当前位置:首页 > 考试认证 > 公务员考试

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

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