电子科大FPGA实验 交通信号灯

电子科大FPGA实验  交通信号灯
电子科大FPGA实验  交通信号灯

现代电子技术综合实验实验报告——基于VHDL语言的交通信号灯设计

姓名:

学号:

2015年3月

摘要

本文以设计简易的交通信号灯为例,介绍了使用VHDL语言开发FPGA的一般流程。该设计采用了硬件描述语言VHDL,在开发软件ISE上完成,可以在48MHz 的频率下正常工作。该信号灯可以依据设定时间进行倒计时,并按规律点亮东西、南北两个方向的红绿黄三种信号灯(本实例中以不同的LED灯演示)。使用ISE集成的仿真软件对VHDL程序进行仿真,并完成了综合布线与管脚锁定,最终下载到芯片上取得了良好效果。

关键词:FPGA,VHDL,ISE。

一、引言

1.1 项目研究现状

模拟交通信号灯是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。频率计的设计有传统方法和现代方法,传统的设计方法耗时耗功,设计强度大,且容易出错,设计的质量不一定是最好的。自然我们考虑到现代方法,即二十世纪八十年代兴起的电子设计自动化技术,英文为Electronic Design Auto,缩写为EDA。以EDA 工具作为开发手段,运用VHDL 语言,将使整个系统大大简化,提高整体的性能和可靠性。

1.2 本文研究的主要内容与关键技术

本次的交通设计主要是顶层设计以及信号灯的状态机设计与实现,采用VHDL 语言设计的交通灯,除晶振源外都在一块FPGA芯片上实现。整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该信号灯具有、精确、可靠、抗干扰性强和现场可编程等优点。

二、实验项目方案设计

2.1 项目系统设计原理

东西、南北车道各有一组信号灯用于指挥交通,东西方向车道和南北方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为45秒。在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换通行车道。这就要求我们设计一个状态机来梳理四个状态间的关系,再设计四个状态分别对应的操作动作,即倒计时显示及LED灯显示,从而完成题目要求。

状态机真值表如下所示:

(S0状态:东西车道通行,南北车道禁行;S1状态:东西车道警示通行,南北车道禁行;S2状态:东西车道禁行,南北车道通行;S3状态:东西车道禁行,南北车道警示通行)

2.2 项目系统设计方案及模块组成

实验板上提供的晶振为48MHz ,这个频率并不适合计数、控制状态机运行以及扫描数码管显示,所以应该先将其合理分频。

数码显示部分,设计一个计数器进行50s 的记时并倒计时显示出来,由于输出倒计时数字为两位数,还要设计分位器将四个数字分别输出,通过扫描使数字同时经过3-8译码器在七段数码管上显示。

状态机部分,通过计数器的记时来更改状态,并设计每个状态对应的显示动作。模块组成如下图:

时钟输入与分频

计数

状态机

LED 显示

数字分位位选扫描

数码管显示

三、实验项目设计平台简介

随着可编程器件纷纷超越百万门级,设计者面临的产品性能与设计效率的挑战也越来越大。设计者必须合理选择各 EDA 厂家提供的加速设计的工具软件,这样才能在较短的时间内设计出高效稳定的产品。在本次设计中,由于选择的 FPGA 芯片是由 Xilinx 公司生产的,所以我们主要使用ISE 软件进行仿真和综合。

四、实验项目单元模块电路设计

4.1 分频模块设计

设置计数变量num ,达到分频常量时置零、重新计数并反转状态,达到分频器的效果。

晶振源为48MHz ,分为三个频率输出:(1)1kHz 频率用于扫描数码管输入信号;(2)2Hz 频率用于状态机;(3)1Hz 频率用于计数器计数以及黄灯闪烁模块。 程序如下: library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity div is

port (clk:in STD_LOGIC;

clk_1,clk_2,clk_1k : out STD_LOGIC); END;

architecture Behavioral of div is

signal num1k : integer range 0 to 23999; signal num2 : integer range 0 to 24;

signal num1 : integer range 0 to 9;

signal temp1k,temp2,temp1 : STD_LOGIC; begin

--48M div 1k

process(clk)

begin

if (clk'event and clk='1') then

if num1k=23999 then

num1k<=0;

temp1k<= not temp1k;

else

num1k<=num1k+1;

end if;

end if;

end process;

--1k div 2

process(temp1k)

begin

if (temp1k'event and temp1k='1') then

if num2=249 then

num2<=0;

temp2<= not temp2;

else

num2<=num2+1;

end if;

end if;

end process;

--2 div 1

process(temp2)

begin

if (temp2'event and temp2='1') then

if num1=1 then

num1<=0;

temp1<= not temp1;

else

num1<=num1+1;

end if;

end if;

end process;

clk_1k<=temp1k;

clk_2<=temp2;

clk_1<=temp1;

end Behavioral;

4.2 计数器模块设计

计数器原理比较简单,将时钟信号变成整数倒计时的时钟信号,输入到状态机中以备倒计时显示用。由于涉及到状态机返回的清零信号,所以如果计数与状态机采用同一个时钟则会造成时序上的不稳定,所以这里我们选择将计数器模块的输入时钟频率设置的比状态机慢一些。

程序如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity counter is

port (clk_in:in std_logic;

clr_in:in std_logic;

count_out:out integer range 0 to 50);

end counter;

architecture Behavioral of counter is

signal count:integer range 0 to 50;

begin

process(clk_in,clr_in)

begin

if clr_in=0 then

count=0;

else if(clk_in'event and clk_in='1') then

if count=50 then

count<=0;

else count<=count+1;

end if

end if

end if

end process;

end;

4.3 状态机模块设计

状态机真值表如前文所示,利用case语句对状态信号state的值进行分别讨论,再利用case语句将进程与其对应的state输出状况联系起来。从而达到LED 按规则点亮与倒计时并行的效果。

程序如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity traffic_new is

port(clk_in: in std_logic;

count: in integer range 0 to 50;

G1P,Y1P,R1P,G2P,Y2P,R2P,W1,W2: out std_logic;

clr_out:out std_logic;

count1,count2:out integer range 0 to 50);

end traffic_new;

architecture Behavioral of traffic_new is

signal state:std_logic_vector(1 downto 0):="00";

signal G1,Y1,R1,G2,Y2,R2:std_logic;

signal dis_count1,dis_count2:integer range 0 to 50;

begin

process(clk_in,count)

begin

if(clk_in'event and clk_in='1') then

case state is

when "00" =>

if count=45 then

state<="01";

clr_out<='1';

end if;

when "01" =>

if count=4 then

state<="10";

clr_out<='1';

end if;

when "10" =>

if count=45 then

state<="11";

clr_out<='1';

end if;

when "11" =>

if count=4 then

state<="00";

clr_out<='1';

end if;

when others =>

state<="00";

end case;

end if;

end process;

process(state,count)

begin

case state is

when "00" =>

G1<='1';Y1<='0';R1<='0';G2<='0';Y2<='0';R2<='1';

dis_count1<=45-count;

dis_count2<=50-count;

when "01" =>

G1<='0';Y1<='1';R1<='0';G2<='0';Y2<='0';R2<='1';

dis_count1<=5-count;

dis_count2<=5-count;

when "10" =>

G1<='0';Y1<='0';R1<='1';G2<='1';Y2<='0';R2<='0';

dis_count1<=50-count;

dis_count2<=45-count;

when "11" =>

G1<='0';Y1<='0';R1<='1';G2<='0';Y2<='1';R2<='0';

dis_count1<=5-count;

dis_count2<=5-count;

when others =>

G1<='1';Y1<='1';R1<='1';G2<='1';Y2<='1';R2<='1';

end case;

end process;

G1P<=not G1;

Y1P<=not Y1;

R1P<=not R1;

G2P<=not G2;

Y2P<=not Y2;

R2P<=not R2;

W1<=not '1';

W2<=not '1';

count1<=dis_count1;

count2<=dis_count2;

end Behavioral;

4.4 闪烁模块设计

这一模块比较简单,利用2kHz的时钟信号,通过整数变量计数分频,达到每1s一次高电平的输出效果,从而控制LED灯的通断。

程序如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity spark is

port (clk_in:in std_logic;

spark_in:in std_logic;

spark_out:out std_logic);

end

architecture Behavioral of spark is

begin

process(clk_in)

variable temp integer range 0 to 1:=0;

begin

if(clk_in'event and clk_in='1')

if temp=1 then

temp:=0;

else

temp:=temp+1;

end if

end if

if temp=1

then spark_out<=spark_in;

else spark_out<=not spark_in;

end if;

end process;

end Behavioral;

4.5 数字分位模块设计

因为从状态机输出的数字是两个两位数,不能在数码管上直接显示,需要进行分位。分位的原理也比较简单,通过对输入数的判断,按照情况输出。即如果输入的是35,大于30,则高位输出3,低位输出35-30=5。

程序如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity fenweiqi1 is

port (num_in:in integer range 0 to 50;

num1,num2:out integer range 0 to 9);

end;

architecture Behavioral of fenweiqi1 is

signal num_out_high: integer range 0 to 50;

signal num_out_low: integer range 0 to 50;

begin

process(num_in)

begin

if num_in=50 then

num_out_high<=5;num_out_low<=0;

else if num_in>=40 then

num_out_high<=4;num_out_low<=num_in-40;

else if num_in>=30 then

num_out_high<=3;num_out_low<=num_in-30;

else if num_in>=20 then

num_out_high<=2;num_out_low<=num_in-20;

else if num_in>=10 then

num_out_high<=1;num_out_low<=num_in-10;

else

num_out_high<=0;num_out_low<=num_in;

end if;

end if ;

end if ;

end if ;

end if;

end process;

num1<=num_out_high;

num2<=num_out_low;

end Behavioral;

4.6 扫描模块设计

扫描模块原理同样是通过整数变量做计数器,在每一个整数时对应不同的数码管显示。在扫描频率足够高时,肉眼便无法分辨哪个数码管正在显示,达到同时显示四个数字的效果。

程序如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity scan is

port (low_1,high_1,low_2,high_2:in integer range 0 to 9;

clk:in std_logic;

smgwx:out std_logic_vector(2 downto 0);

output:out integer range 0 to 9);

end scan;

architecture Behavioral of scan is

signal i:integer range 0 to 3;

begin

process(clk)

begin

if(clk'event and clk='1') then

if i<=3 then

i<=0;

else i<=i+1;

end if;

end if;

case i is

when i=0 =>

smgwx<="111";

output<=low_1;

when i=1 =>

smgwx<="110";

output<=high_1;

when i=2 =>

smgwx<="101";

output<=low_2;

when i=3 =>

smgwx<="100";

output<=high_2;

when others =>

smgwx<="000";

output<=8;

end case;

end process;

end Behavioral;

4.7 译码模块设计

译码模块即一个3-8译码器,不同的数字对应不同的数码管显示序列,写成case语句完成功能即可。

程序如下:

library ieee;

use ieee.std_logic_1164.all;

entity display is

port(num:in integer range 0 to 9;

smgdx:out std_logic_vector(7 downto 0));

end;

architecture Behavioral of display is

begin

process(num)

begin

case num is

when 0=>smgdx<="00000011";

when 1=>smgdx<="10011111";

when 2=>smgdx<="00100101";

when 3=>smgdx<="00001101";

when 4=>smgdx<="10011001";

when 5=>smgdx<="01001001";

when 6=>smgdx<="01000001";

when 7=>smgdx<="00000111";

when 8=>smgdx<="00000001";

when 9=>smgdx<="00001001";

when others=>smgdx<="XXXXXXXX";

end case;

end process;

end;

五、实验项目系统电路设计

5.1系统设计描述

该系统可以在48MHz状态下工作,通过分频器转化成合适频率后,在状态机中实现四种状态的循环,并输出LED灯高低电平的控制信号与数字显示信号。通过分位器、扫描电路、译码器将两组倒计时显示成数码管中的数字输出。

系统原理图如下:

5.2系统仿真

六、实验项目系统设计实现下载成功:

实验结果演示:

七、结束语

7.1 项目设计过程的重点与难点

项目过程中的重点在于状态机的设计,难点在于计数器与状态机时序关系的协调。难点在设计初并未发现,在后续仿真过程中发现了时序问题的严重性。

7.2 项目设计过程中遇到的主要问题及处理方法

主要问题一共有两个,一个是状态机、时钟信号、计数模块的时序关系问题,如采用同一个时钟,由于状态机中可以输出清零信号给计数模块,则必然会紊乱,产生时序错误。后来经过仿真和调试,将状态机的时钟略调快,时序问题得以解决。

第二个问题是整数端口过多,尽量将不必要的整数端口转化成STD_LOGIC形式,使得整个系统更加简洁。

7.3 收获与改进意见

通过这次实验,让我了解到了设计数字电路时不能忽视时序问题,硬件设计语言中要避免使用整数型端口。只有多动手实践才能熟练掌握电子设计技能。

微机系统实验报告

西安电子科技大学 实验报告

实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握 DOS 功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验设备 PC 机一台。 三、实验内容 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS 功能调用完成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。 4. 自主设计输入显示信息,完成编程与调试,演示实验结果。 四、实验源码 DATA SEGMENT DISCHA DB'WangHan 14030188004',0AH,0DH,'$' TAB DB' ',0AH,0DH,'$' BLANK DB' $' DATA ENDS STACK SEGMENT STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,SEG DISCHA

MOV DX,OFFSET DISCHA MOV AH,09H INT 21H NEXT: MOV AH,01H INT 21H CMP AL,'Q' JE ENDSS CMP AL,'q' JE ENDSS MOV BL,AL MOV AX,SEG BLANK MOV DS,AX MOV DX,OFFSET BLANK MOV AH,09H INT 21H MOV BH,0AH MOV DL,BL MOV CL,04H SHR DL,CL CMP DL,BH JNL Q3 JMP Q2 Q1: ADD DL,07H Q2: ADD DL,30H MOV AH,02H INT 21H MOV DL,BL MOV DH,0FH AND DL,DH CMP DL,BH JNL Q3 JMP Q4 Q3: ADD DL,07H Q4: ADD DL,30H

电子科技大学 汇编 实验报告

计算机专业类课程 实 验 报 告 课程名称:汇编语言程序设计 学院:计算机科学与工程 专业:计算机科学与技术 学生姓名:郭小明 学号:2011060100010 日期:2013年12月24日

电子科技大学 实验报告 实验一 学生姓名:郭小明学号:2011060100010 一、实验室名称:主楼A2-412 二、实验项目名称:汇编源程序的上机调试操作基础训练 三、实验原理: DEBUG 的基本调试命令;汇编数据传送和算术运算指令 MASM宏汇编开发环境使用调试方法 四、实验目的: 1. 掌握DEBUG 的基本命令及其功能 2. 学习数据传送和算术运算指令的用法 3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程五、实验内容: 编写程序计算以下表达式: Z=(5X+2Y-7)/2 设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ中。 1.编辑源程序,建立一个以后缀为.ASM的文件. 2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。 3.连接目标程序,产生可执行程序。

4.用DEBUG程序调试可执行程序,记录数据段的内容。 六、实验器材(设备、元器件): PC机,MASM软件平台。 七、实验数据及结果分析: 程序说明: 功能:本程序完成Z=(5X+2Y-7)/2这个等式的计算结果求取。其中X 与Y 是已知量,Z是待求量。 结构:首先定义数据段,两个DB变量VARX与VARY(已经初始化),以及结果存放在VARZ,初始化为?。然后定义堆栈段,然后书写代码段,代码段使用顺序程序设计本程序,重点使用MOV和IMUL以及XOR,IDIV完成程序设计。详细内容见程序注释。 程序清单:

电子科大电子技术实验报告

电子科技大学 电子技术实验报告 学生姓名:班级学号:考核成绩:实验地点:仿真指导教师:实验时间: 实验报告内容:1、实验名称、目的、原理及方案2、经过整理的实验数据、曲线3、对实验结果的分析、讨论以及得出的结论4、对指定问题的回答 实验报告要求:书写清楚、文字简洁、图表工整,并附原始记录,按时交任课老师评阅实验名称:负反馈放大电路的设计、测试与调试

一、实验目的 1、掌握负反馈电路的设计原理,各性能指标的测试原理。 2、加深理解负反馈对电路性能指标的影响。 3、掌握用正弦测试方法对负反馈放大器性能的测量。 二、实验原理 1、负反馈放大器 所谓的反馈放大器就是将放大器的输出信号送入一个称为反馈网络的附加电路后在放大器的输入端产生反馈信号,该反馈信号与放大器原来的输入信号共同控制放大器的输入,这样就构成了反馈放大器。单环的理想反馈模型如下图所示,它是由理想基本放大器和理想反馈网络再加一个求和环节构成。 反馈信号是放大器的输入减弱成为负反馈,反馈信号使放大器的输入增强成为正反馈。四种反馈类型分别为:电压取样电压求和负反馈,电压取样电流求和负反馈,电流取样电压求和负反馈,电流取样电流求和负反馈。 2、实验电路

实验电路如下图所示,可以判断其反馈类型累电压取样电压求和负反馈。 3.电压取样电压求和负反馈对放大器性能的影响 引入负反馈会使放大器的增益降低。负反馈虽然牺牲了放大器的放大倍数,但它改善了放大器的其他性能指标,对电压串联负反馈有以下指标的改善。 可以扩展闭环增益的通频带 放大电路中存在耦合电容和旁路电容以及有源器件内部的极间电容,使得放大器存在有效放大信号的上下限频率。负反馈能降低和提高,从而扩张通频带。 电压求和负反馈使输入电阻增大 当 v一定,电压求和负反馈使净输入电压减小,从而使输入电流 s

电子科大-系统结构实验-解决数据冒险

实 验 报 告 课程名称:计算机系统结构实验学院:计算机科学与工程学院专业:计算机科学与技术 指导教师:好老师 学生姓名:爱学习的小学生 20实验成绩: 日期:2017年5月19日

电子科技大学计算机学院实验中心 电子科技大学 实验报告 一、实验项目名称:解决数据冒险 二、实验室名称:主楼A2-412 实验时间:2017年5月19日 三、实验目的 在给出的流水线代码基础上,增加内部前推数据通路、暂停流水线数据通路和关闭写使能信号的数据通路,解决普通的数据冒险和load数据冒险,通过完成本次实验,更好地理解和掌握解决数据冒险的原理,学以致用,增强编写程序的能力。 四、实验原理 (一)数据冒险的定义 由于流水线上指令重叠执行,改变了原来串行执行的读/写操作数顺序,使得后面依赖前面指令结果的指令得不到准备好的数据,这样的现象叫做数据冒险(数据相关)。 回顾数据冒险的程序例子 I1: add r1,r2,r3 I2: sub r4,r1,r5 I3: and r6,r7,r1 I4: or r8,r1,r9 I5: addi r10,r1,100

I1下面有3条指令不能从寄存器r1读出正确的数据。 (二)数据冒险的解决方案 1、暂停流水线 如上图所示,暂停流水线到最初的指令执行完毕,可以解决数据冒险,但是会涉及到两个问题,即“如何检测出数据冒险”和“如何暂停流水线”。 如何检测数据冒险 a.比较器; I1指令写目的寄存器rd,I2和I3的源操作数是寄存器rs1或rs2中的数据,I2、I3的rs1或rs2与I1的目的寄存器号rd相等时才有可能发生数据冒险。 b.操作码参与检测; 由于指令格式中源寄存器号rs2与立即数部分重叠,而立即数是不会出现冒险的,因此,指令操作码必须要参与检测(区分是寄存器操作数还是立即数)。 c.WREG信号也应参与检测(实际上,WREG也是从操作码中得出的);

电子科大TCPIP第三次实验报告材料

实用文档 电子科技大学实 验 报 告 名:学生姓号:学TCP/IP协议名课程称: 教指导师:2016 年 11 日期:月 26 日 OSPF实验项目名称:协议的多区域特性分:告报评教师签字:

实用文档 一、实验原理 OSPF 协议(RFC 2328)是一个基于链路状态路由选择的内部网关协议:路由器仅 在网络拓扑变化时使用洪泛法(flooding)将自己的链路状态更新信息扩散到整个自治系统中。为了增强 OSPF 协议的可伸缩能力(Scalability),OSPF 协议引入了区域的概念来有效并及时的处理路由选择。OSPF 区域是包含在 AS 中的一些网络、主机和路由器的集合,自治系统中所有 OSPF 区域必须连接到一个主干区域(Area 0)上。 区域内的 OSPF 路由器(内部路由器,IR)使用洪泛法(flooding)传送本区域内的链路状态信息,区域边界的 OSPF 路由器(区域边界路由器,ABR)将本区域的信息汇总发给其他区域,自治系统边界的 OSPF 路由器(自治系统边界路由器,ASBR)将自治 系统外的路由(外部路由)发布在自治系统中。主干区域中的 OSPF 路由器也称为“主干路由器”(BR)。ABR 不能向 OSPF 残桩区域(Stub Area)通告外部路由。在多址网络中,为了避免不必要的链路状态洪泛,需要选举 1 个指定路由器(DR)和 1 个备份指定路由器(BDR)。OSPF 协议有 5 种类型的报文,它们被直接封装在 IP 分组中多播发送。 - 问候(Hello)报文:用来建立并维护 OSPF 邻接关系。在建立了邻接关系后, OSPF 路由器会定期发送 Hello 报文,来测试邻站的可达性。 - 数据库描述(DBD)报文:描述 OSPF 路由器的链路状态数据库的概要信息,即数据库中每一行的标题,它在两台相邻路由器彼此建立邻接关系时发送的。 - 链路状态请求(LSR)报文:由需要若干条特定路由信息的路由器发送出的,它的回答是 LSU 报文。新接入的路由器在收到 DBD 报文后,可以使用 LSR 报文请求关于某些路由的更多信息。 - 链路状态更新(LSU)报文:OSPF 的核心。OSPF 路由器使用 LSU 报文通告链路状态更新信息(即链路状态通告,LSA)每一个 LSU 报文可包含几个 LSA。, OSPF 协议的 LSA 有 5 种常用类型:路由器链路 LSA、网络链路 LSA、汇总链路到网络 LSA、汇总链路到 ASBR LSA 和外部链路 LSA。 5 种类型的 LSA这由不同类型的 OSPF 路由器产生,在特定类型的区域范围内扩散。 - 链路状态确认(LSAck)报文:用来确认每一个收到的 LSU 报文,使得 OSPF 协议的路由选择更加可靠。 二、实验目的 1、掌握 OSPF 协议中区域的类型、特征和作用 2、掌握 OSPF 路由器的类型、特征和作用 实用文档 3、掌握 OSPF LSA 分组的类型、特征和作用 4、理解 OSPF 区域类型、路由器类型和 OSPF LSA 分组类型间的相互关系

电子科技大学微机实验报告(含思考题)河畔下的哈】实验1

实验一 ARM汇编基础实验 1.掌握ARM汇编指令 2.学习掌握C与汇编混合编程基础 3.熟练使用ARM调试工具RVDS进行调试操作 1.熟悉ARM汇编 2.用ARM汇编实现1+2+...+N 3.C调用汇编实验(实现字符串拷贝功能) 4.汇编调用C实验 5.ARM汇编实现冒泡算法(选做) 1. ARM汇编、C语言 2. RVDS工具 硬件:PC 机Pentium100 以上 软件:Windows操作系统,RVDS软件 1.在汇编中使用C定义的全局变量 在汇编和C之间进行一些数据的传递,最简便的办法就是使用全局变量。 在汇编中调用C中定义的全局变量,需要在汇编中IMPORT 对应的全局变量。IMPORT 伪指令用于通知编译器要使用的标号或变量在其他的源文件中定义。 1

例如:汇编文件asmfile.s想调用C文件cfile.c中定义的全局变量a,则在汇编文件asmfile.s 前面要添加: IMPORT a 2.在汇编中调用C的函数 要在汇编中调用C文件中定义的函数,主要做两方面的工作: 首先:需要在汇编中IMPORT 对应的C函数名。 其次:在调用该 C函数之前还需要通过汇编语言传递该函数的 参数。 C和汇编之间的参数传递是通过A TPCS(ARM Thumb Procedure Call Standard)的规定来进行的。简单的说就是如果函数有不多于四个参数,对应的用ARM寄存器R0-R3来进行传递,多于4个时借助栈。函数的返回值通过R0来返回。 3.在C中调用汇编的函数 在C中调用汇编文件中的函数,要做的主要工作有两个: 一:是在C中声明函数原型,并加extern关键字; 二:是在汇编中用EXPORT导出函数名,并用该函数名作为汇 编代码段的标识,最后用mov pc,lr返回。然后,就可以 在C中使用该函数了。 EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用。 1、用ARM汇编实现1+2+….n的运算。

人机交互实验报告

实验一: 实验名称最新人机交互技术 实验目的了解最新人机交互的研究内容。 实验内容通过网络查询最新人机交互相关知识。 1、在百度中找到“最新人机交互视频”的相关网页,查看视频。 2、什么是eTable 。 3、人机交互技术在各个领域的应用。 实验二: 实验名称立体视觉 实验目的掌握立体视觉的原理。 实验内容通过网络查询立体视觉相关知识。 1、在虚拟环境是如何实现立体视觉? 2、3D和4D电影的工作原理。 实验三: 实验名称交互设备 实验目的掌握常用的交互设备的工作原理如键盘、鼠标、显示器、扫描仪。 实验内容通过网络查询人机交互设备相关知识。 1、重点查找液晶显示器和扫描仪的工作原理和方法 2、什么是数字纸?工作原理是什么? 实验四: 实验名称虚拟现实系统中的交互设备 实验目的掌握虚拟现实系统中人机交互设备的工作原理和方法。 实验内容通过网络查询人机交互设备相关知识。重点查找虚拟现实中使用的交互设备和较新的交互设备的工作原理和方法,如:数据手套、三维鼠标、空间跟踪定位器、触觉和力反馈器、头盔式显示器等。(实验报告中写出3种以上) 实验五: 实验名称人机交互界面表示模型 实验目的掌握人机交互界面表示模型中的GOMS、LOTOS和UAN的方法。 实验内容1、简述GOMS和LOTOS表示模型的方法。 2、结合GOMS和LOTOS对任务“中国象棋对弈”进行描述。 3、UAN描述“文件拖入垃圾箱”。 实验六: 实验名称WEB界面设计 实验目的掌握WEB界面设计的原则,了解页面内容、风格、布局、色彩设计的方法。

实验内容1、找到三种类型的网站:旅游景区、购物网站、政府部门网站,每种类型找三个以上网站,总结功能、布局、风格、色彩设计有什么相同和不同。 实验七: 实验名称移动界面设计 实验目的掌握移动界面设计的原则。 实验内容比较移动界面设计与WEB界面设计有什么相同和不同。 实验八: 实验名称可用性分析与评估 实验目的掌握可用性分析与评估的方法。 实验内容对某个网上银行进行可用性分析与评估(银行自定)。 辅导教师成绩

电子科大实验报告撰写格式规范

实验报告撰写格式规范 一、一般格式和顺序 1、封面: (1)题目:应能概括整个论文最重要的内容,具体、切题、不能太笼统,但要引人注目;题名力求简短,严格控制在25字以内。 (2)导师:指导教师的署名一律以批准招生的为准,如有变动应正式提出申请并报研究生院备案,且只能填写指导教师一名。 (3)学生姓名和学号。 2、摘要:论文第一页为中文摘要,约500-800字左右。 内容应包括工作目的、研究方法、成果和结论,语言力求精炼。 3、目录:应是实验报告的提纲,也是实验报告组成部分的小标题,其内容从第一章开始。 4、主要符号表:如果实验报告中使用了大量的物理量符号、标志、缩略词、专门计量单位、自定义名词和术语等,应编写成注释说明汇集表。假如上述符号和缩略词使用数量不多,可以不设专门的汇集表,而在论文中出现时加以说明。 5、引言(第一章):在实验报告正文前,内容为:该研究工作的实用价值或理论意义;实验报告所要解决的问题。 6、正文:是实验报告的主体。按照仿真的步骤来逐一完成。 7、结论(最后一章):应明确、精炼、完整、准确,使人只要一看结论就能全面了解实验报告的意义、目的和工作内容。 8、工作分工:阐述每个成员的工作。 9、参考文献:如有,在这里列出。 二、论文的书写 1、语言表述 (1)论文应层次分明、数据可靠、文字简练、说明透彻、推理严谨,立论正确,避免使用文学性质的带感情色彩的非学术性词语。 (2)论文中如出现一个非通用性的新名词、新术语或新概念,需立即解释清楚。 2、层次和标题 (1)层次要清楚:标题要重点突出,简明扼要。 (2)层次代号的格式如下: 第一章××××(居中书写) 1.1 ×××× 1.1.1 ×××× 3、页眉和页码 页眉: (1)对摘要、目录等前置部分,页眉全用各部分内容的标题。

电子科技大学微嵌实验最新版

电子科技大学微嵌实验最新版

电子科技大学 实验报告 修正了M00和旧版答案的错误,代码使用Keil uVision5 均已调试通过。课程名称微处理器系统结构与嵌入式系统设计_____________________ 实验名称ARM基础编程实验_____________________________________ 任课教师________ 实验教师 ________ 姓名 ______ 学号__________ 实验地点分组号时间年月日、实验目的 1.熟悉并掌握常用ARM匚编指令 2.熟悉并掌握C+汇编混合编程技术 3.熟练使用ARM软件开发调试工具Keil _、实验内容 1.学习使用Keil开发工具 2.使用ARM匚编语言,编程头现1+2+ ...... +N累加运算功冃匕 3.使用C调用汇编函数,实现字符串拷贝功能 4.使用汇编调用C函数,实现求和运算功能 5.使用ARM匚编语言,实现冒泡排序算法(选做) 三、实验步骤

1.实验1.1 :运行Keil ,建立工程文件,单步运行调试演示示例程 序,深刻理解每一条指令,观察寄存器,内存空间的变化。 2.实验1.2 :用汇编语言实现1+2+...+N的累加: a)建立新工程,加入实验1.2文件夹中的sum.s。 b)用汇编补充算法核心部分,代码参考流程图如下图 1.1所示。 c)使用单步调试,仔细观察过程中关键寄存器值的变化。 R0暂存累加和 图 3.实验1.3 : C调用汇编实现字符串拷贝功能: a)建立新工程,加入实验1.3文件夹中的ma in .c和 testfile.s(同一个工程下添加两个文件一起编 译)。 b)补充完成源代码中缺失的部分,分别实现 1.拷贝源字符串的一个字节到R2中; 2.将拷贝的字节复制到目标空间。 c)运行Debug进行调试。 4.实验1.4 :汇编调用C实现求和1+2+...+10 : a)建立新工程,加入实验1.4文件夹中的sum.c和 testfile.s(同一个工程下添加两个文件一起编 译)。 b)补充完成源代 码中缺失的部分,通过调用c函数 g()实现1+2+3+glovb1,结果存在R8中。 c)运行Debug进行调试

电子科技大学 C语言第一次上机实验报告

电子科技大学学院 标准实验报告(实验)课程名称高级语言程序设计实验

电子科技大学 实验报告 实验时间:10月12日晚 一、实验室名称:校公共机房 二、实验项目名称:顺序和分支程序设计 三、实验学时:4学时 四、实验原理: 使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。通过上机练习掌握在C编译器中编辑、编译、连接、和运行C程序的方法和过程。 五、实验目的: 1.熟悉C程序开发环境,熟悉C程序的编辑、编译、连接和运行的过程。 2.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型、指针型 变量,以及对它们赋值的方法。 3.掌握C语言的各种运算符,以及这些运算符的混合使用。 4.掌握简单顺序程序设计方法。 5.学会使用scanf和printf函数。 6.掌握分支结构各种语句的一般功能和执行过程,会使用分支结构编程。 六、实验内容: 上机完成以下编程实验,调试运行程序并完成报告。 1.编写一个C程序,输入三个整数,计算三个整数的和,并将结果输出。 2.编写一个C程序,输入一个字符,找到这个字符前后各隔一个字符的字符。 例如,输入‘d’,显示:‘b’和‘f’。 3.习题2.22(p91)

4.习题2.23(p91) 5.习题3.3(p134) 6.输入一个两位数,输出对应的英文单词。 七、实验器材(设备、元器件): 硬件要求:普通pc机,1G内存,100G硬盘空间即可。软件要求:Windows 7,包括C编译器的IDE。 八、实验步骤、实验编程与运行结果: 1.程序文件名为ex1_1,源程序清单如下: #include int main() { int a,b,c,d; scanf("%d %d %d",&a,&b,&c); d=a+b+c; printf("%d",d); } 典型测试数据(输入): 25 26 27 应输出(上机前自己分析的结果):78 上机时遇到的问题:wu 实际运行结果:78 2.程序文件名为ex1_2,源程序清单如下: #include void main() { int x,y,z; scanf("%c",&x); y=x+2; z=x-2;

电子科技大学通信原理实验实验报告2

电子科技大学通信学院 最佳接收机(匹配滤波器) 实验报告 班级 学生 学号 教师任通菊

最佳接收机(匹配滤波器)实验 一、实验目的 1、运用MATLAB软件工具,仿真随机数字信号在经过高斯白噪声污染后最佳的恢复的方法。 2、熟悉匹配滤波器的工作原理。 3、研究相关解调的原理与过程。 4、理解高斯白噪声对系统的影响。 5、了解如何衡量接收机的性能及匹配滤波器参数设置方法。 二、实验原理 对于二进制数字信号,根据它们的时域表达式及波形可以直接得到相应的解调方法。在加性白高斯噪声的干扰下,这些解调方法是否是最佳的,这是我们要讨论的问题。 数字传输系统的传输对象是二进制信息。分析数字信号的接收过程可知,在接收端对波形的检测并不重要,重要的是在背景噪声下正确的判断所携带的信息是哪一种。因此,最有利于作出正确判断的接收一定是最佳接收。 从最佳接收的意义上来说,一个数字通信系统的接收设备可以看作一个判决装置,该装置由一个线性滤波器和一个判决电路构成,如图1所示。线性滤波器对接收信号进行相应的处理,输出某个物理量提供给判决电路,以便判决电路对接收信号中所包含的发送信息作出尽可能正确的判决,或者说作出错误尽可能小的判决。 图1 简化的接收设备 假设有这样一种滤波器,当不为零的信号通过它时,滤波器的输出能在某瞬间形成信号的峰值,而同时噪声受到抑制,也就是能在某瞬间得到最大的峰值信号功率与平均噪声功率之比。在相应的时刻去判决这种滤波器的输出,一定能得到最小的差错率。 匹配滤波器是一种在最大化信号的同时使噪声的影响最小的线性滤波器设计技术。注意:该滤波器并不保持输入信号波形,其目的在于使输入信号波形失 t输出信号值相对于均方根(输出)噪声值达到真并滤除噪声,使得在采样时刻 最大。

电子科技大学实验报告撰写模板

电子科技大学 实验报告 ( 2018 - 2019 - 2 ) 学生姓名:学生学号:指导老师: 实验学时:1.5h 实验地点:基础实验大楼425 实验时间:2019.4.9 14:30—16:00 报告目录 一、实验课程名称:电路实验I 1.实验名称:BJT放大器设计与测试 二、实验目的: 1. 了解BJT管的基本放大特性。 2. 掌握BJT共射放大电路的分析与设计方法。 3. 掌握放大电路静态工作点的测试方法。 4. 掌握放大电路放大倍数(增益)的测试方法。 5. 掌握放大电路输入、输出电阻的测试方法。 6. 掌握放大电路幅频特性曲线的测试方法。 三、实验器材(设备、元器件): GDS1152A型数字示波器一台。 EE1641B1型函数发生器一台。

通用面包板一个。 1kΩ电阻;10mH电感;0.047μF电容若干。 四、实验原理:

3、测试方法 (1)静态工作点调整与测试 对直流电压的测量一般用数字万用表。测量静态工作点时测出晶体管各管脚对地的电压。 (2)放大倍数的测试 用晶体管毫伏表或者示波器直接测量输出、输入电压,由 Av=vo/vi 即可得到。(3)放大器输入电阻的测试

在放大器输入端口串入一个取样电阻R,用两次电压法测量放大器的输入电阻Ri。 (4)放大器输出电阻的测试 在放大器输出端口选择一个合适的负载电阻RL,用两次电压法分别测量空载与接上负载时的输出电压,计算输出电阻Ro。 (5)放大器频率特性的测试 用点频法测试法测量放大器的频率特性,并求出带宽。 五、实验内容: (1)静态工作点的测试 (2)电压增益测试 (3)输入电阻测试 (4)输出电阻测试 (5)幅频特性测试 六、实验数据及结果分析: 1、静态工作点调整与测试 令VCC=+12V,用万用表测量VE、VB、VC,计算VBE、IEQ、VCE,数据记入表格中。 2、放大倍数的测试 用函数发生器输出一个正弦波信号作为放大器的输入信号,设置信号频率 f =1kHz,(有效值)Ui=5mV,测量U0 ,计算放大器的电压放大倍数(增益)Av。数据填入表中,定量描绘输出波形图。

电子科大射频实验报告_

电子科技大学通信射频电路实验报告 学生姓名: 学号: 指导教师:

实验一选频回路 一、实验内容: 1.测试发放的滤波器实验板的通带。记录在不同频率的输入下输出信号的 幅度,并绘出幅频响应曲线。 2.设计带宽为5MHz,中心频率为39MHz,特征阻抗为50欧姆的5阶带 通滤波器。 3.在ADS软件上对设计出的带通滤波器进行仿真。 二、实验结果: (一)低通滤波器数据记录及幅频响应曲线 低通滤波器数据记录表 频率/MHz 0 0.5 1 1.5 2 2.5 3 3.5 4 幅度/mV 1020 1030 1060 1110 1120 1060 944 840 768 频率/MHz 4.5 5 5.2 5.4 5.6 5.8 6 6.2 6.4 幅度/mV 712 672 656 640 624 600 580 556 528 频率/MHz 6.6 6.8 7 7.2 7.4 7.6 7.8 8 8.2 幅度/mV 500 468 444 412 388 356 332 308 280 频率/MHz 8.4 8.6 8.8 9 9.5 10 10.5 11 11.5 幅度/mV 256 236 216 196 156 116 88 66 49.2 频率/MHz 12 12.5 13 13.5 14 14.5 15 15.5 16 幅度/mV 37.2 28.2 21.8 17 13.4 10.8 8.6 7.4 6 频率/MHz 16.5 17 17.5 18 18.5 19 19.5 20 幅度/mV 5.2 2.4 2.2 1.4 1.2 1.2 1.2 1.8

电子科技大学微机实验报告(含思考题)河畔下的哈】实验3

实验三 ARM汇编实现串口通信实验 1.掌握ARM 的串行口工作原理。 2.学习编程实现ARM和PC机的UART通信。 3.掌握ARM裸机下汇编语言编程方法。 1.学习串行通信原理,了解串行通信控制寄存器。 2.编程实现ARM 和计算机之间的串行通信。 1、ARM汇编基础 2、ARM处理器通用IO口的操作 ? 硬件:ARM嵌入式开发平台,PC 机一台,并口线,串口线,JTAG板? 软件:RVDS,H-JTAG 1.异步串行I/O

异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线(输入,输出)即可进行。 2.串口通信流程 串口通信就是读写寄存器的操作,通过配置相关寄存器,查询寄存器就可以操作串口通信。 需要配置的寄存器有系统时钟,UART行控制寄存器,UART控制寄存器,UART FIFO控制寄 存器,UART MODEM控制寄存器,UART波特率控制寄存器;需要查询的寄存器是发送/接收状 态寄存器。 1. 打开CodeWarrior for RVDS,建立一个工程,通过查S3C2440处理器手册的UART通信寄存器,serialcommutication.s文件中添加代码实现串口通信传输 2. 设置工程配置选项,Language Setting->Realview Assembler和Realview Compiler中的Architecture设置为ARM920T,配置RVDS下的连接器Linker->Realview Linker中的RO Base 为0x30000000 3. 编译和调试工程。 4. 连接PC和实验板的并口,串口;并口连接至ARM的JTAG口,串口连接至COM PORT 口;打开电源;打开H-JTAG程序(。 5. 点击调试器Dubeg->Run,运行程序,打开超级终端,在开始->程序->附件->通讯里打开

数字集成电路设计实验报告

哈尔滨理工大学数字集成电路设计实验报告 学院:应用科学学院 专业班级:电科12 - 1班 学号:32 姓名:周龙 指导教师:刘倩 2015年5月20日

实验一、反相器版图设计 1.实验目的 1)、熟悉mos晶体管版图结构及绘制步骤; 2)、熟悉反相器版图结构及版图仿真; 2. 实验内容 1)绘制PMOS布局图; 2)绘制NMOS布局图; 3)绘制反相器布局图并仿真; 3. 实验步骤 1、绘制PMOS布局图: (1) 绘制N Well图层;(2) 绘制Active图层; (3) 绘制P Select图层; (4) 绘制Poly图层; (5) 绘制Active Contact图层;(6) 绘制Metal1图层; (7) 设计规则检查;(8) 检查错误; (9) 修改错误; (10)截面观察; 2、绘制NMOS布局图: (1) 新增NMOS组件;(2) 编辑NMOS组件;(3) 设计导览; 3、绘制反相器布局图: (1) 取代设定;(2) 编辑组件;(3) 坐标设定;(4) 复制组件;(5) 引用nmos组件;(6) 引用pmos组件;(7) 设计规则检查;(8) 新增PMOS基板节点组件;(9) 编辑PMOS基板节点组件;(10) 新增NMOS基板接触点; (11) 编辑NMOS基板节点组件;(12) 引用Basecontactp组件;(13) 引用Basecontactn 组件;(14) 连接闸极Poly;(15) 连接汲极;(16) 绘制电源线;(17) 标出Vdd 与GND节点;(18) 连接电源与接触点;(19) 加入输入端口;(20) 加入输出端口;(21) 更改组件名称;(22) 将布局图转化成T-Spice文件;(23) T-Spice 模拟; 4. 实验结果 nmos版图

电子科技大学 实验设计方法 实验报告

电子科技大学 实 验 报 告 学生姓名:黎超群 学号: 20 指导教师:王守绪、何为 日期: 2014年5月13日

一、实验室名称: 211大楼 二、实验项目名称: 统计分析应用软件在优化试验设计中的应用 三、实验原理: 统计分析应用软件可以应用在优化试验设计中以简化运算,提高工作效率 四、实验目的: 1. 掌握“正交助手”应用软件在正交试验统计分析法中的应用 2. 熟悉Minitab、DPS统计分析应用软件在多元回归分析中的应用 3. 熟悉“均匀设计”应用软件在均匀试验设计以及分析方法中的应用 4. 加深对理论教学知识的理解 5. 更深刻理解试验设计方法在实际工作中的应用 五、实验内容: 1、用“正交设计助手”进行正交实验的极差分析和方差分析 2、用“正交设计助手”处理带交互作用的正交试验问题 3、minitab进行正交实验的方差分析 4、minitab处理多元回归分析问题 5、“均匀设计”软件解决均匀设计问题的一般流程 6、用DPS数据处理系统处理正交实验及回归分析 六、实验器材(设备、元器件): 计算机、正交设计助手软件、Minitab软件、均匀设计软件、DPS数据处理系统

七、实验步骤: Ⅰ. 用“正交设计助手”进行正交实验的极差分析和方差分析 1.点击文件→新建工程→右击未命名工程→修改工程→键入用户名→点击实验 34)→再点→新建实验→填写实验名称和描述→点击旁边选项卡选择正交表(L 9 击“因素与水平”选项卡填写实验因素和水平(图1)→软件自动完成实验安排(图2)→填写实验结果(图3)→点击分析→“直观分析”得到极差分析结果(图4)→点击“因素指标”得到各因素二元图(图5)→点击“方差分析”→选择误差列为空白列得到方差分析结果(图6)→实验Ⅰ结束 图1 图2 图3 图4 图5 图6Ⅱ. 用“正交设计助手”处理带交互作用的正交试验问题 27)→填写因素、交互作点击新建实验→填写实验名称和描述→选择正交表(L 8 用和水平(图1)→软件自动安排实验(图2)→输入实验结果(图3)→点击“直观分析”得到极差分析结果(图4)→点击“交互作用”→选择发生交互作用的A、B得到交互作用表(图5)→点击“方差分析”得到方差分析结果(图6)

电子科大计算机操作系统实验报告级

电子科技大学 实验报告 学生姓名:郫县LBJ 学号:指导教师:温柔可爱的刘杰彦 实验地点:主楼A2-413 实验时间:2017年4月22日上午 一、实验室名称:计算机学院主楼机房 二、实验项目名称:进程与资源管理 实验分工:郫县LBJ 进程管理设计 郫县小胖子资源管理设计 郫县威斯布鲁克进程调度与时钟中断设计 三、实验学时:2 四、实验原理: 此处的实验原理在指导书上非常丰富,因此不照搬过来,主要写出所要使用到知识点,具体实现过程中的原理分析见报告第八部分“实验步骤”处。 (一)总体设计 系统总体架构如图1所示,最右边部分为进程与资源管理器,属于操作系统内核的功能。要求能够设计与实现一个简单的进程与资源管理器,具有如下功能:完成进程创建、撤销和进程调度;完成多单元 (multi_unit)资源的管理;完成资源的申请和释放;完成错误检测和定时器中断功能。 图1 系统总体结构 (二) Test shell设计 应具有的功能: 1、从终端或者测试文件读取命令; 2、将用户需求转换成调度内核函数(即调度进程和资源管理器); 3、在终端或输出文件中显示结果:如当前运行的进程、错误信息等。

(三)进程管理设计 1、进程状态与操作 2、进程控制块结构PCB 3、主要函数:创建进程、撤销进程 (四)资源管理设计 1、主要数据结构RCB 2、请求资源 3、释放资源 (五)进程调度与时钟中断设计 关键:使用基于优先级的抢占式调度策略,在同一优先级内使用时间片轮转算法。 参考课上ppt: 五、实验目的: 设计和实现进程与资源管理,并完成Test shell的编写,以建立系统的进程管理、调度、资源管理和分配的知识体系,从而加深对操作系统进程调度和资源管理功能的宏观理解和微观实现技术的掌握。 六、实验内容: 设计与实现一个简单的进程与资源管理器,要求具有如下功能:完成进程创建、撤销和进程调度;完成多单元 (multi_unit)资源的管理;完成资源的申请和释放;完成错误检测和定时器中断功能。 通过编写测试脚本(test shell)来完成对进程与资源管理器的测试。 七、实验环境(设备、元器件): Windows 7、Visual Studio 2015 八、实验步骤: (一)系统功能需求分析: (二)总体框架设计: 1、具体原理和总体工作流程分析: 首先,通过test shell从测试文件中读入各种命令。

电子科技大学微机原理复试试题题库

电子科技大学微机原理复试试题 微机原理第一章练习题及解 一:单项选择题 ●若二进制数为010111.101,则该数的十进制表示为( B )。 A:23.5 B:23.625 C:23.75 D:23.5125 ●若无符号二进制数为11000110,则该数的十进制表示为( A )。 A:198 B:70 C:126 D:49 ●十进制数81的8421BCD码为( A )。 A:81H B:51H C:18H D:15H ●11000110为二进制原码,该数的真值为( A )。 A:-70 B:+70 C:-198 D:+198 ●11000110为二进制补码,该数的真值为( D )。 A:+198 B:-198 C:+58 D:-58 ●01000110为二进制补码, 该数的真值为( A )。 A:+70 B:-70 C:+58 D:-58 ●字符A的ASCII码为41H,字符a的ASCII码为( C )。 A:41H B:42H C:61H D:62H ●字符A的ASCII码为41H,字符B的ASCII码为( B )。 A:41H B:42H C:61H D:62H ●字符9 的ASCII码为( C )。因为9与A之间有7个字符 A:09H B:9 C:39H D:99 ●8位二进制数的原码表值范围为( C )。 A:0 ~ 255 B:-128 ~ +127 C:-127 ~ +127 D:-128 ~ +128 ●8位二进制数的反码表值范围为( C )。 A:0 ~ 255 B:-128 ~ +127 C:-127 ~ +127 D:-128 ~ +128 ●8位二进制数的补码表值范围为( B )。 A:0 ~ 255 B:-128 ~ +127 C:-127 ~ +127 D:-128 ~ +128 ●8位二进制数的无符号数表值范围为( A )。即无符号位 A:0 ~ 255 B:-128 ~ +127

电子秒表实验报告

电子技术设计性实训报告 学号:211002146 姓名:邱富烨 同组人:夏文彬 班级:03班 指导老师:林雪健 日期:2012.09.07

目录 一.实训目的---------------------------------------------------3二.设计功能要求---------------------------------------------3 三.电路设计---------------------------------------------------4 (一)电路框图--------------------------------------------4 (二)单元电路分析-------------------------------------4四.设计总图及其工作原理---------------------------------5 (一)工作原理--------------------------------------------5 (二)元件清单--------------------------------------------5五.电路调试--------------------------------------------------6 (一) 调试过程--------------------------------------------6 (二)故障分析与排除-----------------------------------7六.实训心得---------------------------------------------------8

电子科技大学微机实验报告-实验2

实验二 ARM 汇编控制LED 实验 【实验目的】 1、理解掌握通过ARM 汇编控制硬件操作; 2、熟练使用ARM 调试软件RVDS 进行硬件调试。 【实验内容】 1、掌握ARM 处理器GPIO 相关寄存器的使用; 2、用ARM 汇编实现控制开发LED 按照一定方式点亮。 【预备知识】 1、ARM 汇编基础 2、ARM 处理器通用IO 口的操作 【实验设备和工具】 软件:Windows 操作系统,RVDS 软件 硬件:ARM 嵌入式开发板,PC 机Pentium100 以上,并口线,JTAG 板,JTAG 连接线 【实验原理】 1、 S3C2440 处理器相关寄存器介绍 PORT G 控制寄存器( GPGCON ) PORT G 数据寄存器(GPGDAT) PORT G 禁止上拉寄存器(GPGUP) 注:以上寄存器详细描述见实验指导书或者S3C2440 芯片手册。 2、开发板LED 部分原理图说明 GPG5 接LED4,串联上拉电阻 GPG6 接LED5,串联上拉电阻 GPG7 接LED6,串联上拉电阻 GPG8 接LED7,串联上拉电阻 所以,当IO 口输出低电平时,相应的LED 才能点亮。 【实验步骤】 (一)LED 汇编实验 1、通过查看S3C2440 处理器G 口控制寄存器,在文件中添加汇编代码,设置

GPG5-GPG8 为output。 2、在文件中添加汇编代码,禁止GPG5-GPG8 端口的上拉电阻。 3、在文件中添加汇编代码,点亮LED6,熄灭LED5,LED7,LED8,并调用延时。 4、在文件中添加汇编代码,点亮 LED7,熄灭 LED5,LED6,LED8,并调用延时。 5、在文件中添加汇编代码,点亮LED8,熄灭LED5,LED6,LED7,并调用延时。 6、在文件中添加汇编代码,实现LED5-LED8 依次点亮。 7.连接好 JTAG 仿真板,一口与 PC 的并口相连,另一口与开发板的 JTAG 口相连,打开开发板电源。打开H-jtag 程序,检测CPU,点击RVDS 中的“Debu g”,打开RVD 进行硬件调试 (二)LED C 语言实验(选做) 【实验结果和程序】 (一)LED 汇编实验 ;GPIO 寄存器宏定义 GPGCON EQU 0x GPGDAT EQU 0x GPGUP EQU 0x EXPORT LEDTEST AREA LEDTESTASM,CODE,READONL Y ; 该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读 ENTRY LEDTEST ;设置GPG5-GPG8(即LED4--LED7)为output ldr r0,=GPGCON ldr r1,[r0] mov r1,#0x00015400 str r1,[r0] ;禁止GPG5-GPG8(即LED4--LED7)端口的上拉电阻 ldr r0,=GPGUP ldr r1,[r0] mov r1,#0x01e0 str r1,[r0]

电子科技大学软件技术基础实验报告2

电子科技大学通信与信息工程学院标准实验报告 (实验)课程名称软件技术基础实验 电子科技大学教务处制表

电子科技大学 实验报告 一、实验室名称:校公共机房 二、实验项目名称:链表程序设计 三、实验学时:4学时 四、实验原理: 使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。通过上机练习掌握在链表的建立、插入删除等方法和过程。 五、实验目的: 1.熟练链表的概念和基本操作方法。 2.掌握课程平台使用方法。 六、实验内容: 上机完成链表的一系列操作,并用链表完成课后习题9,编程实验,调试运行程序并完成报告。 七、实验器材(设备、元器件): 硬件要求:普通pc机,1G内存,100G硬盘空间即可。 软件要求:Windows 7,包括C编译器的IDE。 八、实验步骤、实验编程与运行结果: 1.程序文件名为***.cpp,源程序清单如下: /*基础实验1,链表的建立,插入,删除*/ #include #include struct list

{ int info; struct list *next; }; struct list *Create(int *numnode) {//创建一个链表 struct list *head,*tail,*cnew; head=NULL; int num; printf("输入数据(以零结束):"); while(1) { scanf("%d",&num); if(num==0)//输入为零表示输入结束 break; cnew=(struct list*)malloc(sizeof(struct list)); cnew->info=num; cnew->next=NULL; if(head==NULL)//若为空则将头节点指向新节点 head=cnew; else tail->next=cnew;//将当前节点的next指向新的节点 tail=cnew; (*numnode)++; } return head; } void insert(struct list *h,int i,int x) { struct list *p,*t; int j; p=h; j=0; while(p!=NULL&&jnext; j++; }

相关文档
最新文档