实验时间:
实验报告
(2012----2013学年第一学期)
课程名称: EDA技术 专业班级: 学 号: 姓 名:
实验一:原理图输入法设计与仿真 2012年10月19日(第七周)
一、实验目的 1、熟悉QuartusⅡ9.0软件的使用方法 2、通过实验掌握组合逻辑电路的EDA原理图输入设计法,通过电路的仿真和硬件验证,学会对实验板上的FPGA/CPLD进行编程下载,进一步了解门电路的功能。 二、实验原理 1、示意框图 2、真值表 选择控制信号 输入数据 D0 D1 D2 D3 4选1 数据选择器 Y 输出信号 S1 S0 图1-1 4选1数据选择器示意框图 表1-1 4选1数据选择器的真值表 输入 S1 0 0 1 1 输出 Y D0 D1 D2 D3 D D0 D1 D2 D3 S0 0 1 0 1 3、逻辑表达式 YD0S1S0D1S1S0D2S1S0D3S1S0 三、实验内容 1、为本项工程设计建立文件夹(文件名不能用中文) 2、输入设计项目和存盘 (1)打开原理图编辑窗口 (2)编辑4选1数据选择器的原理图 (3)文件存盘:以mux41.bdf为文件名保存在工程目录中。 (3)建立工程:为mux41.bdf建立工程,工程名可以与文件夹相同。 (4)编译 3、仿真 4、引脚锁定 5、编程下载与硬件验证 四、实验设计 1、原理图
D0INPUTVCCNAND3instD1INPUTVCCNAND3NAND4inst6D2INPUTVCCNAND3OUTPUTYinst7D3INPUTVCCNAND3inst9inst8S1INPUTVCCNOTinst10S0INPUTVCCNOTinst11 3、管脚锁定 1、 系统时序仿真情况 五、实验结果及总结 六、实验心得 其实这个实验很简单,仅仅是让我们熟悉QuartusⅡ9.0软件的使用方法,在书本上的每个步骤都写的清清楚楚,我们组员按着书本上的步骤一步一步的做,实验做完后,我们那一大组很多小组依旧不停的请求老师指导,我们是最先做完实验的小组了。之后我们被不同的小组询问。其实只要看看书就可以很顺利做完实验,但是同学们做实验之前都没有好好做实验预习报告。 指导教师:吴建清 2012年10月19日
成绩 实验二 七人表决器的设计
实验时间:2012年11月2日(第九周) 一、实验目的 1、初步了解VHDL语言; 2、学会用行为描述方式来设计电路。 二、实验原理 1、用七个开关作为表决器的7个输入变量,输入变量为逻辑“1”时表示表决者“赞同”;输入变量为“0”时,表示表决者“不赞同”。输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。当表决器的七个输入变量中有4个以上(含4个)为“1”时,则表决器输出为“1”;否则为“0”。 2、采用行为描述时,可用一变量来表示选举通过的总人数。当选举于或等于4时为通过,输出灯亮,反之不通过时,灯不亮。描述时,只须检查每一个输入的状态(通过为“1”不通过为“0”)并将这些状态值相加,判断状态值和即可选择输出。 三、实验内容 1. 编写上述电路的VHDL源程序,并进行编译。 2. 锁定引脚,建议选择实验电路模式5。 3. 编程下载与硬件验证。 四、实验设计 1、VHDL程序 library ieee; use ieee.std_logic_11.all; entity biaoque is port(x0,x1,x2,x3,x4,x5,x6:in bit; y1:out bit); end entity biaoque; architecture one of biaoque is begin process(x0,x1,x2,x3,x4,x5,x6) variable a,b,c,d,e:integer; begin a:=0;b:=0;c:=0;e:=0; if ((x0 or x1)='0') then a:=0; elsif ((x0 and x1)='1') then a:=2; else a:=1; end if; if ((x2 or x3)='0') then b:=0; elsif ((x2 and x3)='1') then b:=2; else b:=1; end if; if ((x4 or x5)='0') then c:=0; elsif ((x4 and x5)='1') then c:=2; else c:=1; end if; if x6='0' then d:=0; else d:=1; end if; e:=a+b+c+d; if e>=4 then y1<='1'; else y1<='0'; end if; end process; end architecture one; 五、实验结果及总结
2、 系统时序仿真情况 3、 引脚匹配 六、实验心得 做这个实验之前做了预习报告,但是上实验室进行调试和老师的指导,才发现自己的之前的程序是行不通的,看到其他小组不同的程序,最后经过努力重新编写,最后成功完成实验。条条道路通罗马,在学习的道路上不能去复制他人的东西,而要自己去思考,去创新!努力让自己多学点东西。经过努力完成的事情才会有成就感。 指导教师:吴建清 2012年11月4日
成绩
实验三 显示电路设计
一、实验目的
1、学习7段数码显示译码器设计;2、学习VHDL的多层设计方法。 二、实验仪器设备
1、PC机一台 2、GW48-PK2系列SOPC/EDA实验开发系统 三、实验原理
1、七段数码显示工作原理(共阴极接法)
↗↗a a↗↗b
↗↗fgb c↗↗ dce↗↗ de↗ ↗f ↗↗g abcdefg
7 段数码是纯组合电路,通常的小规模专用IC,如74 或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2 进制的,所以输出表达都是16 进制的,为了满足16 进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。作为7 段译码器,输出信号LED7S的7 位分别接数码管的7 个段,高位在左,低位在右。例如当LED7S 输出为“1101101”时,数码管的7 个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h。 2、显示代码概念 显示代码
字型 a b c d e f g a0 1 1 1 1 1 1 0 f1 0 1 1 0 0 0 0 bg2 1 1 0 1 1 0 1 3 1 1 1 1 0 0 1 ec4 0 1 1 0 0 1 1 d5 1 0 1 1 0 1 1 11110116 1 0 1 1 1 1 1 7 1 1 1 0 0 0 0 abcdefg 8 1 1 1 1 1 1 1 9 1 1 1 1 0 1 1
四、实验内容
1、编写7段译码器VHDL源程序。 2、在QuartusⅡ软件上编译和仿真。
3、锁定管脚,建议选择实验电路模式6,显示译码输出用数码8 显示译码输出(PIO46-PIO40),键8、键7、键6 和键5 四位控制输入。
4编程下载与硬件验证。
5、记录系统仿真和硬件验证结果。 五、实验结果: 1、VHDL源程序 port(x:in std_logic_vector(3 downto 0); led:out std_logic_vector(6 downto 0)); end entity xianshi; architecture one of xianshi is signal led7:std_logic_vector(6 downto 0); begin process(x) begin case x is when \"0000\" =>led <=\"1111110\"; when \"0001\" =>led <=\"0110000\"; when \"0010\" =>led <=\"1101101\"; 2、波形仿真图:
when \"0011\" =>led <=\"1111001\"; when \"0100\" =>led <=\"0110011\"; when \"0101\" =>led <=\"1011011\"; when \"0110\" =>led <=\"1011111\"; when \"0111\" =>led <=\"1110000\"; when \"1000\" =>led <=\"1111111\"; when \"1001\" =>led <=\"1111011\"; when others =>null; end case; end process; end architecture one;
4、 引脚锁定:
六、实验心得: 其实本实验的显示我们在模电里面就学习过了,也用集成块进行过
实验,本实验用程序加硬件完成。真所谓条条道路通罗马!
实验四 四位全加器
一、实验目的
通过实验让学生熟悉QuartusⅡ的VHDL文本设计流程全过程,掌握组合逻辑电路的文本输入设计法,通过对设计电路的仿真和硬件验证,让学生进一步了解加法器的功能。 二、实验仪器设备
1、PC机一台
2、GW48-PK2系列SOPC/EDA实验开发系统 三、实验原理
4位全加器可看作4个1位全加器串行构成,具体连接方法如下图所示:
S3 CO S2 S1 S0 B3 A3 B2 A2 B1 A1 B0 A0 Cin b s a 3 cout cin b s a 2 cout cin b s a 1 cout cin b s a 0 cout cin C2C1C0 图3-1 由1位全加器构成4位全加器连接示意图
采用VHDL语言设计时调用其附带的程序包,其系统内部会自行生成此结构 四、实验内容
4. 编写1位全加器full_add1的VHDL源程序,并进行编译。
5. 利用元件例化语句编写4位全加器full_adder4的VHDL源程序,并进行编译和仿真。
6. 锁定引脚,建议选择实验电路模式1:键1输入4位加数,键2输入4位被加数,键8输入Cin,数码管5显示相加和,D8显示进位CO。
7. 编程下载与硬件验证。 五、设计提示
调用STD_LOGIC_UNSIGNED包。先设计一个一位的全加器包括三个输入端:a,b,cin(进位输入),两个输出端:s(和),cout(进位输出)。四位串行进位的全加器可以利用四个一位的全加器搭建而成,其结构如上图所示,其输入端口分别为a0,a1,a2,a3,b0,b1,b2,b3,cin输出端口分别为s0,s1,s2,s3,cout。在实验中只需要先描述一位全加器,然后用component语句进行元件说明,再利用元件例化语句就可以实现四位的全加器。
六、实验验证:
1、实验程序: 一位全加器 library ieee; use ieee.std_logic_11.all; entity full_add1 is port(a,b,cin:in std_logic; s,count:out std_logic); end entity full_add1; architecture one of full_add1 is begin s <= a xor b xor cin; count <= (a and b) or (a and cin) or (b and cin); end architecture one; 四位全加器 library ieee; use ieee.std_logic_11.all; entity full_adder4 is port(A,B:in std_logic_vector(3 downto 0); Cin:in std_logic; S:out std_logic_vector(3 downto 0); Co:out std_logic); end entity full_adder4; architecture two of full_adder4 is component full_add1 is port(a,b,cin:in std_logic; s,count:out std_logic); end component; signal d,e,f:std_logic; begin u1:full_add1 port map(a=>A(0),b=>B(0),cin=>Cin,s=>S(0),count=>d); u2:full_add1 port map(a=>A(1),b=>B(1),cin=>d,s=>S(1),count=>e); u3:full_add1 port map(a=>A(2),b=>B(2),cin=>e,s=>S(2),count=>f); u4:full_add1 port map(a=>A(3),b=>B(3),cin=>f,s=>S(3),count=>Co); end architecture two; 2、波形图仿真:
七、实验心得:真正意义上明白了例化语句的功能。
实验五 序列检测器设计
实验室名称:EDA技术 学时数: 2节 注:报告内容根据具体实验课程或实验项目的要求确定,一般包括实验目的、实验仪器、原理摘要、数据记录及结果分析等。如纸张不够请自行加纸。 一、实验目的 1、了解状态机的设计; 2、用状态机实现序列检测器的设计。
二、实验内容 1、预习序列检测器原理并写出预习报告; 2、设计一个8位检测序列信号“11100101”的序列检测器; 3、画出ASM图; 4、用VHDL语言编写出源程序; 5、在QuartusⅡ软件上编译和仿真, 6、锁定引脚。建议选择电路模式8,用键7(PIO11)控制复位信号CLR;键6(PIO9)控制状态机工作时钟CLK;待检测串行序列数输入DIN 接PIO10(左移,最高位在前);指示输出AB接PIO39~PIO36(显示于数码管6)。下载后:①按实验板“系统复位”键;②用键2 和键1 输入2 位十六进制待测序列数“11100101”;③按键7 复位(平时数码6 指示显“B”);④按键6(CLK) 8次,这时若串行输入的8 位二进制序列码(显示于数码2/1 和发光管D8~D0)与预置码“11100101”相同,则数码管6 应从原来的B变成A,表示序列检测正确,否则仍为B。 7、编程下载与硬件验证。 三、实验条件 根据以上的实验内容写出实验报告,包括序列检测器原理的叙述,程序设计、软件编译、仿真分析、引脚锁定、硬件测试和详细实验过程,给出程序分析报告、仿真波形图及其分析报告。、 四、实验设计 1、VHDL源程序 library ieee; use ieee.std_logic_11.all; entity xljcq is port(din,clk,clr:in std_logic; AB:out std_logic_vector(3 downto 0)); end xljcq;
architecture one of xljcq is type states is(s0,s1,s2,s3,s4,s5,s6,s7,s8); signal st, nst:states := s0; begin com:process(st,din) begin case st is when s0=> if din ='1' then nst <= s1; else nst<= s0; end if; when s1=> if din ='1' then nst <= s2; else nst<= s0; end if; when s2=> if din ='1' then nst <= s3; else nst<= s0; end if; when s3=> if din ='0' then nst <= s4; else nst<= s0; end if; when s4=> if din ='0' then nst <= s5; else nst<= s0; end if; when s5=> if din ='1' then nst <= s6; else nst<= s0; end if; when s6=> if din ='0' then nst <= s7; else nst<= s0; end if; when s7=> if din ='1' then nst <= s8; else nst<= s0; end if; when s8=> if din ='1' then nst <= s1; else nst<= s0; end if; when others => nst<=s0; end case; end process; reg:process(clk,clr) begin if clr ='1' then st<=s0; elsif clk 'event and clk='1' then st<= nst; end if; end process reg; AB <= \"1010\" when st=s8 else \"1011\"; end one; 2、管脚锁定 五、实验结果及总结 5、系统时序仿真情况
六、实验心得 动手这次实验,使测试技术这门课的一些理论知识与实践相结合,更加深刻了我对测试技术这门课的认识,巩固了我的理论知识。 指导教师:吴建清 成绩 2012年10月19日 实验六 分频器的设计
实验室名称:EDA技术 学时数: 2节
注:报告内容根据具体实验课程或实验项目的要求确定,一般包括实验目的、实验仪器、原理摘要、数据记录及结果分析等。如纸张不够请自行加纸。 一、实验目的 学习数控分频器的设计、分析和测试方法 二、实验内容 1、预习数控分频器原理并写出预习报告; 2、设计一个数控分频器; 3、用VHDL语言编写出源程序; 4、在QuartusⅡ软件上编译和仿真; 5、锁定引脚和硬件验证。建议选择电路模式1,键2/键1 负责输入8位预置数D(PIO7-PIO0);CLK由clock0 输入,频率选65536Hz 或更高(确保分频后落在音频范围);输出FOUT 接扬声器(SPKER)。编译下载后进行硬件测试:改变键2/键1 的输入值,可听到不同音调的声音。 三、实验原理 数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。 四、实验设计 1、系统的原理框图
2、VHDL源程序 library ieee; use ieee.std_logic_11.all; use ieee.std_logic_unsigned.all; entity fenpin is port(din : in std_logic_vector(7 downto 0); iclk : in std_logic; oclk : buffer std_logic); end fenpin; architecture fp of fenpin is begin process(din ,iclk) variable q :std_logic_vector(7 downto 0); begin if iclk'event and iclk='1' then if q 3、管脚锁定 五、实验结果及总结 6、系统时序仿真情况 六、实验心得 通过这次测试技术的实验,使我学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我们受益匪浅. 指导教师:吴建清 成绩 2012年10月19日 实验七 步进电机设计 实验室名称:EDA技术 学时数: 2节 注:报告内容根据具体实验课程或实验项目的要求确定,一般包括实验目的、实验仪器、原理摘要、数据记录及结果分析等。如纸张不够请自行加纸。 一、实验目的 学习用FPGA实现步进电机的驱动和细分控制 二、实验内容 1、预习步进电机原理,详细看教材P390—P396. 2、设计一个步进电机控制器;用VHDL语言编写出源程序;在QuartusⅡ软件上编译和仿真锁定引脚、编程下载与硬件验证。 3、对步进电机控制器的原理进行叙述,程序设计、软件编译、仿真分析硬件测试。 4、锁定引脚和硬件验证。建议选择电路模式5,CLK0接clock0,选择4Hz;CLK5接clock5,选择32768Hz;S接PIO6(键7),控制步进电机细分旋转(1/8细分,2.25度/步),或不细分旋转(18度/步);U_D接PIO7(键8),控制旋转方向。步进电机的四个相Ap、Bp、Cp、Dp(对应程序中的Y0、Y1、Y2、Y3)分别与PIO,PIO65,PIO66,PIO67相接。 三、实验原理 步进电机作为一种电脉冲——角位移的转换元件,由于具有价格低廉、易于控制、无积累误差和计算机接口方便等优点,在机械、仪表、工业控制等领域中获得了广泛的应用。利用FPGA设计的数字比较器可以同步产生多路PWM电流波形,对多相步进电机进行灵活的控制。通过改变控制波形表的数据、增加计数器的位数,可提高技术精度,从而可以对步进电机的步进转角进行任意细分,实现步进转角的精确控制。用FPGA实现多路PWM控制,无须外接D/A转换器,使外围控制电路大大简化,控制方式简洁,控制精度高,控制效果好。用单片机和DSP的控制都难以达到同样地控制效果。 四、实验设计 1、系统的原理框图 2、VHDL源程序 LIBRARY ieee; USE ieee.std_logic_11.all; LIBRARY work; ENTITY step_a IS PORT ( clk0 : IN STD_LOGIC; u_d : IN STD_LOGIC; clk5 : IN STD_LOGIC; S : IN STD_LOGIC; Y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END step_a; ARCHITECTURE bdf_type OF step_a IS ATTRIBUTE black_box : BOOLEAN; nATTRIBUTE noopt : BOOLEAN; COMPONENT busmux_0 PORT(sel : IN STD_LOGIC; dataa : IN STD_LOGIC_VECTOR(3 DOWNTO 0); datab : IN STD_LOGIC_VECTOR(3 DOWNTO 0); result : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT; ATTRIBUTE black_box OF busmux_0: COMPONENT IS true; ATTRIBUTE noopt OF busmux_0: COMPONENT IS true; COMPONENT dec2 PORT(CLK : IN STD_LOGIC; A : IN STD_LOGIC_VECTOR(1 DOWNTO 0); D : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END COMPONENT; COMPONENT cnt24 PORT(CLK : IN STD_LOGIC; EN : IN STD_LOGIC; U_D : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(4 DOWNTO 0) ); END COMPONENT; COMPONENT cnt8 PORT(CLK : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END COMPONENT; COMPONENT cmp3 PORT(a : IN STD_LOGIC_VECTOR(3 DOWNTO 0); b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); agb : OUT STD_LOGIC ); END COMPONENT; COMPONENT rom3 PORT(inclock : IN STD_LOGIC; address : IN STD_LOGIC_VECTOR(4 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ); END COMPONENT; SIGNAL F : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL P : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL q : STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC; SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SYNTHESIZED_WIRE_6 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN SYNTHESIZED_WIRE_0 <= '0'; b2v_125 : dec2 PORT MAP(CLK => clk0, A => q(1 DOWNTO 0), D => SYNTHESIZED_WIRE_1); b2v_127 : cnt24 PORT MAP(CLK => clk0, EN => SYNTHESIZED_WIRE_0, U_D => u_d, CQ => q); b2v_41 : busmux_0 PORT MAP(sel => S, dataa => SYNTHESIZED_WIRE_1, datab => F, result => Y); b2v_83 : cnt8 PORT MAP(CLK => clk5, CQ => SYNTHESIZED_WIRE_6); b2v_93 : cmp3 PORT MAP(a => P(15 DOWNTO 12), b => SYNTHESIZED_WIRE_6, agb => F(3)); b2v_94 : cmp3 PORT MAP(a => P(11 DOWNTO 8), b => SYNTHESIZED_WIRE_6, agb => F(2)); b2v_95 : cmp3 PORT MAP(a => P(7 DOWNTO 4), b => SYNTHESIZED_WIRE_6, agb => F(1)); b2v_96 : cmp3 PORT MAP(a => P(3 DOWNTO 0), b => SYNTHESIZED_WIRE_6, agb => F(0)); b2v_inst : rom3 PORT MAP(inclock => clk0, address => q, q => P); END bdf_type; 仿真波形: 引脚匹配: 五、实验结果及总结 其实这个实验很简单,仅仅是让我们熟悉QuartusⅡ9.0软件的使用方法,在书本上的每个步骤都写的清清楚楚,我们组员按着书本上的步骤一步一步的做,实验做完后,我们那一大组很多小组依旧不停的请求老师指导,我们是最先做完实验的小组了。之后我们被不同的小组询问。其实只要看看书就可以很顺利做完实验,但是同学们做实验之前都没有好好做实验预习报告。 指导教师:吴建清 成绩 2012年10月19日 实验八 8051/c51核及片上系统设计 ——基于8051单片机IP核的等精度频率计单片机系统设计(LCD显示) 实验室名称:EDA技术 学时数: 2节 注:报告内容根据具体实验课程或实验项目的要求确定,一般包括实验目的、实验仪器、原理摘要、数据记录及结果分析等。如纸张不够请自行加纸。 一、实验目的 了解液晶显示器的使用方法,了解等精度频率计原理,了解FPGA8051内核及其外围器件的基本结构。 二、实验内容 1、预习等精度频率计/相位计设计和液晶显示器的使用方法,详细看教材P315—P325和百度。 2、按图(1)在自己新建的工程中设计好电路图。 3、用C语言编程,设计单片机程序,完成与FPGA接口程序编写;用Keil软件编译,并产生下载编译代码,后缀名为:.hex。 4、锁定引脚和硬件验证。建议选择电路模式5,CLK0接clock0,选择20MHz;长跳线一端接clock0的16Hz,另一端接P180引脚,目的是提供要测量的输入频率。用14针排线连接好核心板和LCD模块,核心板上的P197与LCD模块接口的D6相连,P225与D7相连,然后依次顺序连接好。按复位键,再按K13(任意波形,开发板左下角的4*4按键模块)显示要测的输入频率值; 按复位键,再按K12(显示脉宽);按复位键,再按K11(显示占空比)。 三、实验原理 利用8051单片机核,能将图(1)(课本P324图10-17)中的主要元件集成在单片机FPGA中。图(1)是一个含有等精度频率计测试模块的8051单片机系统,图中ETESTER模块的VHDL程序参看课本P318(例10-39)。单片机时钟由嵌入式锁相环提供,设在40MHz。 四、实验设计 1、系统的原理框图 2、VHDL源程序 LIBRARY ieee; USE ieee.std_logic_11.all; LIBRARY work; ENTITY MCU51 IS PORT ( CLK : IN STD_LOGIC; TCLK : IN STD_LOGIC; RST : IN STD_LOGIC; MT : IN STD_LOGIC; NO : IN STD_LOGIC; P1 : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); P3I : IN STD_LOGIC_VECTOR(7 DOWNTO 0); P3O : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); POE : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END MCU51; ARCHITECTURE bdf_type OF MCU51 IS COMPONENT ftest1c PORT(BCLK : IN STD_LOGIC; TCLK : IN STD_LOGIC; CLR : IN STD_LOGIC; CL : IN STD_LOGIC; SPUL : IN STD_LOGIC; RST : IN STD_LOGIC; SEL : IN STD_LOGIC_VECTOR(2 DOWNTO 0); START : OUT STD_LOGIC; EEND : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; COMPONENT pll50 PORT(inclk0 : IN STD_LOGIC; c0 : OUT STD_LOGIC; c1 : OUT STD_LOGIC ); END COMPONENT; COMPONENT rom4kb PORT(inclock : IN STD_LOGIC; address : IN STD_LOGIC_VECTOR(11 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; COMPONENT ram256 PORT(wren : IN STD_LOGIC; inclock : IN STD_LOGIC; address : IN STD_LOGIC_VECTOR(7 DOWNTO 0); data : IN STD_LOGIC_VECTOR(7 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; COMPONENT cpu8051v1 PORT(MT : IN STD_LOGIC; NO : IN STD_LOGIC; X1 : IN STD_LOGIC; X2 : IN STD_LOGIC; RESET : IN STD_LOGIC; NEA : IN STD_LOGIC; NESFR : IN STD_LOGIC; ALEI : IN STD_LOGIC; PSEI : IN STD_LOGIC; P0I : IN STD_LOGIC_VECTOR(7 DOWNTO 0); P1I : IN STD_LOGIC_VECTOR(7 DOWNTO 0); P2I : IN STD_LOGIC_VECTOR(7 DOWNTO 0); P3I : IN STD_LOGIC_VECTOR(7 DOWNTO 0); RAMdaO : IN STD_LOGIC_VECTOR(7 DOWNTO 0); ROMdaO : IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT : OUT STD_LOGIC; NMOE : OUT STD_LOGIC; NMWE : OUT STD_LOGIC; DLM : OUT STD_LOGIC; ALE : OUT STD_LOGIC; PSEN : OUT STD_LOGIC; ALEN : OUT STD_LOGIC; FWE : OUT STD_LOGIC; FOE : OUT STD_LOGIC; SFRWE : OUT STD_LOGIC; SFROE : OUT STD_LOGIC; IDLE : OUT STD_LOGIC; XOFF : OUT STD_LOGIC; P0E : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P0O : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P1E : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P1O : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P2E : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P2O : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P3E : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); P3O : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); POE : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); RAMadr : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); RAMdaI : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ROMadr : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ); END COMPONENT; SIGNAL BCLK : STD_LOGIC; SIGNAL P0 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL P0I : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL P1E : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL P1I : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL P1O : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL P2I : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL P3E : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL ROMa : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL RST1 : STD_LOGIC; SIGNAL WEN : STD_LOGIC; SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC; SIGNAL SYNTHESIZED_WIRE_16 : STD_LOGIC; SIGNAL SYNTHESIZED_WIRE_4 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SYNTHESIZED_WIRE_5 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SYNTHESIZED_WIRE_8 : STD_LOGIC; SIGNAL SYNTHESIZED_WIRE_17 : STD_LOGIC; SIGNAL SYNTHESIZED_WIRE_13 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SYNTHESIZED_WIRE_14 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SYNTHESIZED_WIRE_15 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN SYNTHESIZED_WIRE_17 <= '1'; b2v_inst : ftest1c PORT MAP(BCLK => BCLK, TCLK => TCLK, CLR => P0(0), CL => P0(1), SPUL => P0(2), RST => RST1, SEL => P0(6 DOWNTO 4), START => P0I(7), EEND => P0I(3), DATA => P2I); PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(7) = '1') THEN P1(7) <= P1O(7); ELSE P1(7) <= 'Z'; END IF; END PROCESS; PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(6) = '1') THEN P1(6) <= P1O(6); ELSE P1(6) <= 'Z'; END IF; END PROCESS; PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(5) = '1') THEN P1(5) <= P1O(5); ELSE P1(5) <= 'Z'; END IF; END PROCESS; PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(4) = '1') THEN P1(4) <= P1O(4); ELSE P1(4) <= 'Z'; END IF; END PROCESS; PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(3) = '1') THEN P1(3) <= P1O(3); ELSE P1(3) <= 'Z'; END IF; END PROCESS; PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(2) = '1') THEN P1(2) <= P1O(2); ELSE P1(2) <= 'Z'; END IF; END PROCESS; PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(1) = '1') THEN P1(1) <= P1O(1); ELSE P1(1) <= 'Z'; END IF; END PROCESS; PROCESS(P1O,SYNTHESIZED_WIRE_0) BEGIN if (SYNTHESIZED_WIRE_0(0) = '1') THEN P1(0) <= P1O(0); ELSE P1(0) <= 'Z'; END IF; END PROCESS; P1I <= P1; SYNTHESIZED_WIRE_8 <= NOT(RST1); b2v_inst17 : pll50 PORT MAP(inclk0 => CLK, c0 => SYNTHESIZED_WIRE_16, c1 => BCLK); WEN <= NOT(SYNTHESIZED_WIRE_1); b2v_inst5 : rom4kb PORT MAP(inclock => SYNTHESIZED_WIRE_16, address => ROMa(11 DOWNTO 0), q => SYNTHESIZED_WIRE_15); b2v_inst6 : ram256 PORT MAP(wren => WEN, inclock => SYNTHESIZED_WIRE_16, address => SYNTHESIZED_WIRE_4, data => SYNTHESIZED_WIRE_5, q => SYNTHESIZED_WIRE_14); b2v_inst7 : cpu8051v1 PORT MAP(MT => MT, NO => NO, X1 => SYNTHESIZED_WIRE_16, X2 => SYNTHESIZED_WIRE_16, RESET => SYNTHESIZED_WIRE_8, NEA => SYNTHESIZED_WIRE_17, NESFR => SYNTHESIZED_WIRE_17, ALEI => SYNTHESIZED_WIRE_17, PSEI => SYNTHESIZED_WIRE_17, P0I => P0I, P1I => P1I, P2I => P2I, P3I => SYNTHESIZED_WIRE_13, RAMdaO => SYNTHESIZED_WIRE_14, ROMdaO => SYNTHESIZED_WIRE_15, FWE => SYNTHESIZED_WIRE_1, P0O => P0, P1E => P1E, P1O => P1O, P3O => P3O, POE => POE, RAMadr => SYNTHESIZED_WIRE_4, RAMdaI => SYNTHESIZED_WIRE_5, ROMadr => ROMa); SYNTHESIZED_WIRE_13 <= NOT(P3I); SYNTHESIZED_WIRE_0 <= NOT(P1E); RST1 <= RST; P0I(2 DOWNTO 0) <= \"000\"; P0I(6 DOWNTO 4) <= \"000\"; END bdf_type; 3、管脚锁定 引脚匹配: 五、实验结果及总结 7、系统时序仿真情况 六、实验心得 在做测试技术的实验前,我以为不会难做,就像以前做物理实验一样,做完实验,然后两下子就将实验报告做完.直到做完测试实验时,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅. 指导教师:吴建清 成绩 2012 年 12 月 19日
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务