东华大学可编程asic课后实验报告答案赵曙光.docx
- 文档编号:6623469
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:12
- 大小:816.80KB
东华大学可编程asic课后实验报告答案赵曙光.docx
《东华大学可编程asic课后实验报告答案赵曙光.docx》由会员分享,可在线阅读,更多相关《东华大学可编程asic课后实验报告答案赵曙光.docx(12页珍藏版)》请在冰豆网上搜索。
东华大学可编程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
实验结果:
实现流水线
最高频率
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东华 大学 可编程 asic 课后 实验 报告 答案 曙光
![提示](https://static.bdocx.com/images/bang_tan.gif)