计算机组成原理实验
班级: 学号: 姓名:
运算器实验
一、实验目的
1. 掌握Xilinx ISE原理图设计的用法 2. 掌握单片运算器74181的工作原理 二、实验原理图
三、实验步骤
1. 建立工程文件,添加alu_74181实验模块,完成原理图设计 (一)建立工程文件
(1)点击桌面 Xilinx ISE 软件
(2)选择 File/New Project,输入工程名为sample
(3)在Hierarchy框中,右击鼠标,选择New Source,选择Schematic,输入文件名test (二)添加实验模块
(1)在桌面左下方选择Design栏,在Hierarchy框中,右击鼠标,选择Add Copy of Source
(2)在D:/jan_lab_source中,选择所用模块的 . vhd文件,点击打开 (3)在桌面左下方选择Symbols栏,在Symbols框中,选择所用实验模块,点击拖动到桌面右面的原理图编辑框中 (三)原理图设计
(1)选择原理图编辑框左侧Add I/O Marker,在实验模块的所用引脚端口建立端口符号
(2)右击所用端口符号,选择Rename Port,选择Rename the Branch,对端口符号进行命名
(3)选择原理图编辑框左侧Add wire,可在实验模块间画线 (4)原理图设计完毕,点击保存
2. 修改用户约束文件,建立端口名与实验箱上拨动开关及LED灯对应联系,注意数据排列时的高低位顺序 (四)修改用户约束文件
(1)在桌面左下方选择Design栏,在Hierarchy框中,点击鼠标,选择Add Copy of Source
(2)在D:/jan_lab_source中选择Myucf文件,点击打开 (3)在Hierarchy框中,展开品字形符号栏,双击Myucf
(4)用所命名的端口名修改Myucf文件中的语句,修改后程序如下所示: ###------------CLOCK----------- #NET \"clk\" LOC = \"L15\"; #
###-------------Atlys led output------------------- #NET \"atlys_led[0]\" LOC = U18; #Atlys LD0 #NET \"atlys_led[1]\" LOC = M14; #Atlys LD1 #NET \"atlys_led[2]\" LOC = N14; #Atlys LD2 #NET \"atlys_led[3]\" LOC = L14; #Atlys LD3 #NET \"atlys_led[4]\" LOC = M13; #Atlys LD4 #NET \"atlys_led[5]\" LOC = D4; #Atlys LD5 #NET \"atlys_led[6]\" LOC = P16; #Atlys LD6 #NET \"atlys_led[7]\" LOC = N12; #Atlys LD7 #
###-----------Atlys Switch input------------------- #NET \"atlys_sw[0]\" LOC = A10; # Atlys sw0
#NET \"atlys_sw[1]\" LOC = D14; # Atlys sw1 #NET \"atlys_sw[2]\" LOC = C14; # Atlys sw2 #NET \"atlys_sw[3]\" LOC = P15; # Atlys sw3 #NET \"atlys_sw[4]\" LOC = P12; # Atlys sw4 #NET \"atlys_sw[5]\" LOC = R5; # Atlys sw5 #NET \"atlys_sw[6]\" LOC = T5; # Atlys sw6 #NET \"atlys_sw[7]\" LOC = E4; # Atlys sw7 #
###------------EES261 switch input---------- #NET \"swt[19]\" LOC = \"U11\"; #SW20 #NET \"swt[18]\" LOC = \"R10\"; #SW19 #NET \"swt[17]\" LOC = \"U10\"; #SW18 #NET \"swt[16]\" LOC = \"R8\"; #SW17 #
#NET \"swt[15]\" LOC = \"M8\"; #SW16 #NET \"swt[14]\" LOC = \"U8\"; #SW15 NET \"a2\" LOC = \"U7\"; #SW14 NET \"a1\" LOC = \"N7\"; #SW13 #
NET \"C[3]\" LOC = \"T6\"; #SW12 NET \"C[2]\" LOC = \"R7\"; #SW11 NET \"C[1]\" LOC = \"N6\"; #SW10 NET \"C[0]\" LOC = \"U5\"; #SW9 #
NET \"B[3]\" LOC = \"V5\"; #SW8 NET \"B[2]\" LOC = \"P7\"; #SW7 NET \"B[1]\" LOC = \"T7\"; #SW6 NET \"B[0]\" LOC = \"V6\"; #SW5 #
NET \"A[3]\" LOC = \"P8\"; #SW4 NET \"A[2]\" LOC = \"V7\"; #SW3 NET \"A[1]\" LOC = \"V8\"; #SW2 NET \"A[0]\" LOC = \"N8\"; #SW1 #
##----------EES261 leds output------------ NET \"f<0>\" LOC = \"U16\"; #LED1 NET \"f<1>\" LOC = \"U15\"; #LED2 NET \"f<2>\" LOC = \"U13\"; #LED3 NET \"f<3>\" LOC = \"M11\"; #LED4 #NET \"led<4>\" LOC = \"R11\"; #LED5 #NET \"led<5>\" LOC = \"T12\"; #LED6 #NET \"led<6>\" LOC = \"N10\"; #LED7 #NET \"led<7>\" LOC = \"M10\"; #LED8 #
###-------hex7seg------------------- # NET \"an<0>\" LOC = \"V16\"; # NET \"an<1>\" LOC = \"V15\"; # NET \"an<2>\" LOC = \"V13\"; # NET \"an<3>\" LOC = \"N11\"; #
# NET \"a_to_g<0>\" LOC = \"T8\"; #a # NET \"a_to_g<1>\" LOC = \"V10\"; #b # NET \"a_to_g<2>\" LOC = \"T10\"; #c # NET \"a_to_g<3>\" LOC = \"V11\"; #d # NET \"a_to_g<4>\" LOC = \"N9\"; #e # NET \"a_to_g<5>\" LOC = \"P11\"; #f # NET \"a_to_g<6>\" LOC = \"V12\"; #g # NET \"dp\" LOC = \"T11\"; #dp
###--------------END---------- (5)修改完毕,点击保存 3. 编译,下载 (五)编译
(1)在桌面左下方选择Design栏,在Hierarchy框中,选中所建立的 .Sch文件
(2)在Processes框中,双击Generate Programing File,观察编译后的提示信息 (六)下载
(1)打开实验箱电源
(2)在桌面上选择 开始 / 程序 / Digilent / Adept / Adept
(3)点击Browse,选择 C : / Documents and Settings / 工程名 / 文件名.bit,点击打开
(4)点击Program,完成下载
4. 设定74181控制状态,运算数据,验证74181的算术逻辑功能表(正逻辑) 5. 观察分析74181二个进位Cn,Cnplus4的状态 四、实验结果
下载完成后实验箱照片如下所示:
Cn是算术运算的进位控制器,Cn=0(低电平),表示有进位,运算时相当于在最低位上加进位1,Cn=1(高电平),表示无进位。进位只与算术运算有关,与逻辑运算无关。
五、实验感想
通过本次实验,我对计算机组成原理实验的学习有了更深的了解。在实验过程中遇到的问题,我及时的求助于老师和同学们之后一一得到了解决,同时,我又从这许多的问题当中学到了不少的东西,在以后的实验过程中要吃一堑长一智,比如防止连接线路错误等等,这些问题看似较小,但很有可能会是影响实验结果的大问题。
因篇幅问题不能全部显示,请点此查看更多更全内容