基本信息
文件名称:2025年可编程逻辑控制实验指导与技巧解析.docx
文件大小:137.46 KB
总页数:14 页
更新时间:2025-06-16
总字数:约7.78千字
文档摘要

试验1:四位加减法器设计

1.试验任务:设计带借位、进位的4位二进制减法、加法器。

2.试验规定:要考虑借位、进位。在软件环境下,编写源文献并用器件实现。

3.试验过程:

原理分析:多位减加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器,串行进位是将全加器进行级联构成的,这种方式电路会比较简朴。本次试验中采用了自底向上(Bottom-Up)的分层次电路设计措施。实际上,VerilogHDL语言中的加减运算符为程序设计提供了很大的便利,本次试验又采用它实现了加减法器。

VerilogHDL源文献设计:

[1].运用算术运算符的程序设计:

moduleadderandsubtracter(s,k,cin,cout);

inputcin,k;

parameter[3:0]aa=4'b0100;

parameter[3:0]bb=4'b0101;

outputcout;

output[3:0]s;

regcout,s;

?always@(k)

?begin

if(k==1)

? {cout,s}<=aa+bb+cin;

? else

{cout,s}=aa-bb-cin;

?end

endmodule

[2].自底向上(Bottom-Up)的分层次电路设计措施的VerilogHDL源文献。

moduleAdderandsubtracter1bit(k,A,B,Cin,Sum,Cout);

inputA,B,Cin,k;

outputSum,Cout;

parameter[3:0]A=4b0100;

parameter[3:0]B=4b0101;

assignSum=(((A^k)^B)^Cin)^k;

assignCout=((A^k)B)|((A^k)Cin)|(BCin);

endmodule

moduleAdderorsubtracter4bit(k,First,Second,Carry_In,Sum_out,Carry_out);

input[0:3]First,Second;

inputCarry_in;

output[0:3]Sum_out;

outputCarry_out;

wire[0:2]Car;

?always@(k)

begin

if(k==0)

Adderandsubtracter1bit

A1(First[3],Second[3],Carry_in,Sum_out[3],Car[2]);

A2(First[2],Second[2],Car[2],Sum_out[3],Car[1]);

A3(First[3],Second[3],Car[1],Sum_out[3],Car[0]);

A4(First[3],Second[3],Car[0],Sum_out[3],Carry_out);

else

Adderandsubtracter1bit

A1(First[3],Second[3],Carry_in,Sum_out[3],Car[2]);

A2(First[2],Second[2],Car[2],Sum_out[3],Car[1]);

A3(First[3],Second[3],Car[1],Sum_out[3],Car[0]);

A4(First[3],Second[3],Car[0],Sum_out[3],Carry_out);

end

endmodule

编译源文献:

在主界面Process窗口中双击TranslateDesign,对所编辑的代码进行综合,通过后会出现绿色对号。

管脚的分派:

在Diamond主界面中,点击Tools-Spreadsheetview,打开Spreadsheetview

框。在pin一栏中填入各输入输出映射的管脚。其中定义37、38、39、40.为数据输出显示位。54为进位位或借位位,控制键,52为加减法切换键。

烧录程序,器件实现:

在Diamond主界面中,进入Tools-Programmer,在State栏出现PASS,即阐明烧写成功。

4.试验成果及分析:

1)用加减法运算符实现:在试验板上可以看到,发光二极管在不带进位的状况下,即cin为0时,这时应按下试验板上控制进位位与借位位的按键54时,显示为1001,在不按下按键时,即进位位cin为1时为1010,可知带进位的加法器功能完全实现;

在按下控制加减法器按键52,并且同步按下54时,为不带借位的减法器输出为1111,不按下54时,即为有借位