东华大学可编程asic课后实验报告答案赵曙光.docx

上传人:b****6 文档编号:6623469 上传时间:2023-01-08 格式:DOCX 页数:12 大小:816.80KB
下载 相关 举报
东华大学可编程asic课后实验报告答案赵曙光.docx_第1页
第1页 / 共12页
东华大学可编程asic课后实验报告答案赵曙光.docx_第2页
第2页 / 共12页
东华大学可编程asic课后实验报告答案赵曙光.docx_第3页
第3页 / 共12页
东华大学可编程asic课后实验报告答案赵曙光.docx_第4页
第4页 / 共12页
东华大学可编程asic课后实验报告答案赵曙光.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

东华大学可编程asic课后实验报告答案赵曙光.docx

《东华大学可编程asic课后实验报告答案赵曙光.docx》由会员分享,可在线阅读,更多相关《东华大学可编程asic课后实验报告答案赵曙光.docx(12页珍藏版)》请在冰豆网上搜索。

东华大学可编程asic课后实验报告答案赵曙光.docx

东华大学可编程asic课后实验报告答案赵曙光

可编程ASIC技术实验报告

 

学号:

何足道

姓名:

何足道

班级:

自动化null

老师:

赵曙光

 

实验一

实验要求:

用持续赋值语句描述一个4选1数据选择器。

程序代码:

modulee(out,in0,in1,in2,in3,sel);

outputout;

inputin0,in1,in2,in3;

input[1:

0]sel;

regout;

assignsel=in0&in1&in2&in3;

case(sel)

2'b00:

out=in0;

2'b01:

out=in1;

2'b10:

out=in2;

2'b11:

out=in3;

default:

out=2'bx;

endcase

endmodule

实验结果:

实验二

实验要求:

用行为语句设计一个8位计数器,每次在时钟的上升沿,计数器加1,当计数器溢出时,自动从零开始重新计数。

另外,计数器有同步复位端。

程序代码:

modulee(out,data,load,reset,clk);

output[7:

0]out;

input[7:

0]data;

inputload,clk,reset;

reg[7:

0]out;

always@(posedgeclk)//clk上升沿触发

begin

if(!

reset)out=8'h00;//同步清0,低电平有效

elseif(load)out=data;//同步预置

elseout=out+1;//计数

end

endmodule

实验结果:

实验三

实验要求:

设计一个4位移位寄存器。

程序代码:

modulee(out_data,in_data,clk,clr);

output[3:

0]out_data;

input[3:

0]in_data;

inputclk,clr;

reg[3:

0]out_data;

always@(posedgeclkorposedgeclr)

begin

if(clr)out_data<=0;

end

endmodule

实验结果:

实验四

实验要求:

设计一个n位加法器

程序代码:

moduleyt(cout,sum,a,b,cin);

parametery=9;

output[y:

0]sum;

outputcout;

input[y:

0]a,b;

inputcin;

reg[y:

0]sum;

regcout;

always@(aorborcin)

begin

{cout,sum}=a+b+cin;

end

endmodule

实验结果:

实验五

实验要求:

设计一个4位减法器

程序代码:

moduleyt(d,q,clk,a,clear,load,up_down,qd);

input[3:

0]d;

input[3:

0]q;

inputclk,clear,load,up_down,a;

output[7:

0]qd;

reg[7:

0]cnt;

assignqd=cnt;

always@(up_down)

begin

if(!

clear)cnt=8'h00;//同步清0,低电平有效

elseif(load)cnt=d;//同步预置

elseif(up_down)cnt=d+q;//加法

elseif(a)cnt=d*q;//乘法

elsecnt=d-q;//减法

end

endmodule

实验结果:

实验六

实验要求:

4位乘法器

程序代码:

moduleyt(d,q,clk,a,clear,load,up_down,qd);

input[3:

0]d;

input[3:

0]q;

inputclk,clear,load,up_down,a;

output[7:

0]qd;

reg[7:

0]cnt;

assignqd=cnt;

always@(up_down)

begin

if(!

clear)cnt=8'h00;//同步清0,低电平有效

elseif(load)cnt=d;//同步预置

elseif(up_down)cnt=d+q;//加法

elseif(a)cnt=d*q;//乘法

elsecnt=d-q;//减法

end

endmodule

实验结果:

实验七

实验要求:

设计实现一个功能类似74LS160的电路。

程序代码:

moduleooo(out,data,load,reset,clk);

output[9:

0]out;

input[9:

0]data;

inputload,clk,reset;

reg[9:

0]out;

always@(posedgeclk)

begin

if(!

reset)out=8'h00;

elseif(!

(out-9))out=8'h00;

elseif(load)out=data;

elseout=out+1;

end

endmodule

实验结果:

实验八

实验要求:

设计一个“1101”序列检测器。

程序代码:

moduleqwe(a,F,clk);

inputa,clk;

outputF;

regb,c,d,F;

always@(posedgeclk)

begin

b<=a;

c<=b;

d<=c;

F=d&c&(!

b)&a;

end

endmodule

实验九

实验要求:

设计一个加法器,实现sum=a0+a1+a2+a3,a0、a1、a2、a3宽度都是8位。

如用下面两种方法实现,哪种方法更好一些。

(1)sum=((a0+a1)+a2)+a3

(2)sum=(a0+a1)+(a2+a3)

程序代码:

moduleyyy(cout,sum,ina,inb,inc,ind,cin,clk);

output[7:

0]sum;

outputcout;

input[7:

0]ina,inb,inc,ind;

inputcin,clk;

reg[7:

0]tempa,tempb,tempd,tempe,sum;

regcout;

regtempc;

always@(posedgeclk)

begintempa=ina;tempb=inb;tempd=inc;tempe=ind;tempc=cin;

end

always@(posedgeclk)

begin{cout,sum}=tempa+tempb+tempc+tempd+tempe;end

endmodule

2

moduleqwe(sum,sum2,sum3,cout,cout2,cout3,b,a,c,d,cin,clk);

output[7:

0]sum,sum2,sum3;

outputcout,cout2,cout3;

input[7:

0]a,b,c,d;

inputcin,clk;

regsum,sum2,sum3;

always@(posedgeclk)

sum=a+b+cin;

always@(posedgeclk)

sum2=c+d+cin;

always@(posedgeclk)

sum3=sum+sum2;

endmodule

实验结果:

实验十

实验要求:

用流水线技术对上例中的sum=((a0+a1)+a2)+a3的实现方式进行优化,对比最高工作频率。

程序代码:

moduleyyy(cout,sum,ina,inb,inc,ind,cin,clk);

output[8:

0]sum;

outputcout;

input[7:

0]ina,inb,inc,ind;

inputcin,clk;

reg[7:

0]tempa,tempb,tempc,tempd,sum;

regtempci,firstco,secondco,thirdco,cout;

reg[1:

0]firsts,thirda,thirdb,thirdc,thirdd;

reg[3:

0]seconda,secondb,secondc,secondd,seconds;

reg[5:

0]firsta,firstb,firstc,firstd,thirds;

always@(posedgeclk)

begintempa=ina;tempb=inb;tempc=inc;tempd=ind;tempci=cin;end

always@(posedgeclk)

begin{firstco,firsts}=tempa[1:

0]+tempb[1:

0]+tempc[1:

0]+tempd[1:

0]+tempci;firsta=tempa[7:

2];firstb=tempb[7:

2];firstc=tempc[7:

2];firstd=tempd[7:

2];

end

always@(posedgeclk)

begin{secondco,seconds}={firsta[1:

0]+firstb[1:

0]++firstc[1:

0]+firstd[1:

0]+firstco,firsts};

seconda=firsta[5:

2];secondb=firstb[5:

2];secondc=firstc[5:

2];secondd=firstd[5:

2];end

always@(posedgeclk)

begin{thirdco,thirds}={seconda[1:

0]+secondb[1:

0]+secondc[1:

0]+secondd[1:

0]+secondco,seconds};

thirda=seconda[3:

2];thirdb=secondb[3:

2];thirdc=secondc[3:

2];thirdd=secondd[3:

2];

end

always@(posedgeclk)

begin

{cout,sum}={thirda[1:

0]+thirdb[1:

0]+thirdc[1:

0]+thirdd[1:

0]+thirdco,thirds};

end

endmodule

实验结果:

 

实现流水线

最高频率

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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