EDA实验报告.docx
- 文档编号:29414966
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:22
- 大小:163.63KB
EDA实验报告.docx
《EDA实验报告.docx》由会员分享,可在线阅读,更多相关《EDA实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告