微机原理实验解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LOC="L3" | IOSTANDARD="LVCMOS33"; LOC="N1" | IOSTANDARD="LVCMOS33"; LOC="L5" | IOSTANDARD="LVCMOS33"; LOC="L4" | IOSTANDARD="LVCMOS33"; LOC="K3" | IOSTANDARD="LVCMOS33"; LOC="M2" | IOSTANDARD="LVCMOS33"; LOC="L6" | IOSTANDARD="LVCMOS33"; LOC="M4" | IOSTANDARD="LVCMOS33"; LOC LOC LOC LOC LOC LOC LOC LOC = = = = = = = = "N6" "M6" "M3" "N5" "N2" "N4" "L1" "M1" | | | | | | | | IOSTANDARD IOSTANDARD IOSTANDARD IOSTANDARD IOSTANDARD IOSTANDARD IOSTANDARD IOSTANDARD = = = = = = = = "LVCMOS33"; "LVCMOS33"; "LVCMOS33"; "LVCMOS33"; "LVCMOS33"; "LVCMOS33"; "LVCMOS33"; "LVCMOS33";
源码:
#include "xparameters.h" #include "xil_io.h" int main() { u16 code; int state; while(1){ if(state){
code = Xil_In16(0x40000000); if(code<32768) Xil_Out16(XPAR_LEDS_BASEADDR,code); else Xil_Out16(XPAR_LEDS_BASEADDR,(~code)+32769);
建立硬件平台的步骤: 1. 搭建最小系统 2. 添加GPIO IP核并进行配置(8位输入,8位输出,并 且要激活通道2) 3. 配置ucf文件,保存后生成bit流 4. 导出硬件到SDK,再建立相应的工程
AXI总线
Irq AXI INTC
AXI总线接口 Interrupt AXI 总 线 接 口
Intr0
NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET "CLK" LOC="E3" | IOSTANDARD="LVCMOS33"; "RESET" LOC="E16" | IOSTANDARD="LVCMOS33"; "RsRx" LOC="C4" | IOSTANDARD="LVCMOS33"; "RsTx" LOC="D4" | IOSTANDARD="LVCMOS33"; "sw<0>" "sw<1>" "sw<2>" "sw<3>" "sw<4>" "sw<5>" "sw<6>" "sw<7>" "seg<0>" "seg<1>" "seg<2>" "seg<3>" "seg<4>" "seg<5>" "seg<6>" "seg<7>" "an<0>" "an<1>" "an<2>" "an<3>" "an<4>" "an<5>" "an<6>" "an<7>" LOC="U9" LOC="U8" LOC="R7" LOC="R6" LOC="R5" LOC="V7" LOC="V6" LOC="V5" | | | | | | | | IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33";
6.用16个理想开关输入二进制数,16只发光二极 管显示该二进制数字节序变换后的数值。要求只有 按下某个按键时,才可以改变输出。
简单来说,就是要求:把高8位跟低8位互换。
1、得到switch开关的状态(即原码): code = Xil_In16(0x40000000); 2、把高8位跟低8位互换: newcode = (code>>8) + (code<<8); 3、输出给LED: Xil_Out16(XPAR_LEDS_BASEADDR,newcode);
源码:
#include "xparameters.h" #include "xil_io.h" int main() { u16 code; u16 newcode;
源码:
#include "xparameters.h" #include "xil_io.h" int main() { int i; u16 code; u16 newcode; while(1){ newcode = 0; code = Xil_In16(0x40000000); for(i=0;i<16;i++){ newcode = (((code>>i)%2)<<(15-i)) + newcode; } Xil_Out16(XPAR_LEDS_BASEADDR,newcode); } return 0; }
} } return 0; }
5.用16个理想开关输入二进制数,16只发光二极管倒序显示 该二进制数各位。设开关从左到右依次表示D15 ~D0 ,发光 二极管从右到左依次表示D15 ~D0 。要求只有按下某个按键 时,才可以改变输出。
简单来说,就是要求:输入一个16位的数,把它倒置输出。 1、得到switch开关的状态(即原码): code = Xil_In16(0x40000000); 2、求第i位上的值:(code>>i)%2 3、把16位倒置后,重写: newcode = 0; for(i=0;i<16;i++){ newcode = (((code>>i)%2)<<(15-i)) + newcode; } Xil_Out16(XPAR_LEDS_BASEADDR,newcode);
Xil_Out16(XPAR_LEDS_BASEADDR,(~code)+32769); } } return 0;
}
4. 用16个理想开关输入二进制数,16只发光二极管显示二进 制数。设输入的二进制数为补码,输出的二进制数为原码。要 求只Leabharlann Baidu按下某个按键时,才可以改变输出。
简单来说,就是要求:输入补码,输出原码。 1、得到switch开关的状态(即 补码): code = Xil_In16(0x40000000); 2、求补码: (正数不变;负数符号位不变,其余位数取反加1) if(code<32768){ Xil_Out16(XPAR_LEDS_BASEADDR,code); } else{ Xil_Out16(XPAR_LEDS_BASEADDR,(~code)+32769); }
源码:
#include "xparameters.h" #include "xil_io.h" int main() { u16 code,state; while(1){ if(state){ code = Xil_In16(0x40000000); if(code<32768) Xil_Out16(XPAR_LEDS_BASEADDR,code); else
.c文件(需要进一步完善)
建立硬件平台: 1.搭建最小系统 2.添加连个GPIO IP核并进行配置:
GPIO0:8位输入,8位输出(段码),并且要激活通道2 GPIO1:8位输出(位码)
3.配置ucf文件,保存后生成bit流 4.打开SDK,建立相应的工程
UCF 文件配置:
NET "CLK" TNM_NET = sys_clk_pin; TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz;
.C文件(需要进一步完善)
效果图
(与第6章习题10类似) 3.用16个理想开关输入二进制数,16只发光二极管显示二 进制数。设输入的二进制数为原码,输出的二进制数为补 码。要求只有按下某个按键时,才可以改变输出。
简单来说,就是要求:输入原码,输出补码。 1、得到switch开关的状态(即原码): code = Xil_In16(0x40000000); 2、求补码: (正数不变;负数符号位不变,其余位数取反加1) if(code<32768){ Xil_Out16(XPAR_LEDS_BASEADDR,code); } else{ Xil_Out16(XPAR_LEDS_BASEADDR,(~code)+32769); }
实验操作考试复习题
解 析
(与第6章习题8类似) 1.采用某8位独立开关输入十六进制字符(0~9,a~f,A~F) 的ASCII码,并将该ASCII码表示的十六进制字符通过一位七 段数码管显示出来,其余数值显示“-”。要求: 只有按下某个按钮时,才可以改变显示的字符。 字符显示只能为A,b,C,d,E,F 如8位独立开关的值为0110 0001时, 仅1位7段数码管显示 大写的A,(0x 61为a的ASCII码表示,但显示为A) 不能多位同时显示
Interrupt AXI总线接口 GPIO 8位switch + 4位button
MicroBlaze
AXI总线接口
GPIO
UCF文件配置如下:
NET "CLK" TNM_NET = sys_clk_pin; TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz; NET "CLK" LOC="E3" | IOSTANDARD="LVCMOS33"; NET "RESET" LOC="E16" | IOSTANDARD="LVCMOS33"; NET "RsRx" LOC="C4" | IOSTANDARD="LVCMOS33"; NET "RsTx" LOC="D4" | IOSTANDARD="LVCMOS33"; NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET NET "sw<0>" "sw<1>" "sw<2>" "sw<3>" "sw<4>" "sw<5>" "sw<6>" "sw<7>" "seg<0>" "seg<1>" "seg<2>" "seg<3>" "seg<4>" "seg<5>" "seg<6>" "seg<7>" LOC="U9" LOC="U8" LOC="R7" LOC="R6" LOC="R5" LOC="V7" LOC="V6" LOC="V5" | | | | | | | | IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33"; IOSTANDARD="LVCMOS33";
LOC="L3" | IOSTANDARD="LVCMOS33"; LOC="N1" | IOSTANDARD="LVCMOS33"; LOC="L5" | IOSTANDARD="LVCMOS33"; LOC="L4" | IOSTANDARD="LVCMOS33"; LOC="K3" | IOSTANDARD="LVCMOS33"; LOC="M2" | IOSTANDARD="LVCMOS33"; LOC="L6" | IOSTANDARD="LVCMOS33"; LOC="M4" | IOSTANDARD="LVCMOS33";
相关文档
最新文档