1EDA技术电子系统设计实践2电子系统设计实践1、人民币新旧检测系统设计2、任意波形信号发生器设计3、实验四程序编写31、人民币新旧检测系统设计(1)设计任务介绍检测人民污损情况,并给出提示。(2)简单测量原理通过光电耦合器检测测试点上的反射情况,若污损,信号反馈较弱,电平发生变化,这样一排光电耦合器,扫描一行,人民币移动过测试线后,就能确定污损程度,决定该人民币是否为残币。(3)CPLD任务负责信号测量工作,主要是AD转换器的控制。(4)系统硬件电路介绍4主要程序清单1--实体说明部分Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_arith.all;Useieee.std_logic_unsigned.all;EntityRmbJianCeisPort(CLK:InStd_Logic;RST:InStd_Logic;--clockandresetsignalA:InStd_Logic_Vector(3DownTo0);--C51RD,A15,A14,A13HaveData:InStd_Logic;--HaveaRMBtobeexaminedY:OutStd_Logic_Vector(5DownTo0);--Y0,Y1,Y2,Y3,Y4,Y5--chipselectsignalOUTPUT:OutStd_Logic_Vector(3DownTo0);--OUT3~OUT0--chipselectsignalof44617S4617A,S4617B,S4617C:Outstd_logic;--8chanelselectof14617CONVST,AD7822RD,FIFOWR:Outstd_logic;FF:InStd_Logic;--FIFOfullsignalCLKOUT8:OutStd_Logic);EndRmbJianCe;5主要程序清单2--通道切换进程ArchitecturertlofRmbJianCeisTypeState_Typeis(s0,s1,s2,s3,s4,s5,s6,s7);--Statetype:8statesSignalCurrent_State:State_Type;SignalClk8:Std_Logic;--clockof8devidingfrequencySignalSele:Std_Logic_Vector(4DownTo0):=11111;--chipselectsignalof44617BeginCLKOUT8=Clk8;S4617A=Sele(0);S4617B=Sele(1);S4617C=Sele(2);Chanel_Switch:Process--ChanelswitchprocessBeginCaseSele(4DownTo3)isWhen00=OUTPUT=0001;When01=OUTPUT=0010;When10=OUTPUT=0100;When11=OUTPUT=1000;Whenothers=OUTPUT=0000;EndCase;Endprocess;6主要程序清单3--分频进程Clock_Deviding:Process(CLK)--8devidingfrequencyProcessVariableCount1:Integerrange0to8;--counterBeginIf(RST='0'orHaveData='1')thenClk8='1';Elseif(CLK'EventandCLK='0')thenCount1:=Count1+1;IfCount1=8thenCount1:=0;Endif;IfCount14thenCLK8='1';ElseCLK8='0';Endif;Endif;Endif;Endprocess;7主要程序清单4--状态机部分State_Machine:Process(Clk8,FF,CLK)--StatemachineprocessBegin--If(RST='0'orFF='0')thenIf(RST='0'orFF='0')thenCONVST='0';AD7822RD='1';Sele=11111;Current_State=s0;--HandlepartifresetandfifofullElseif(Clk8'eventandClk8='1')then8主要程序清单5--状态机部分续CaseCurrent_StateisWhens0=--ChanelswitchstateCONVST='1';AD7822RD='1';FIFOWR='1';Sele=Sele+1;Current_State=s1;Whens1=--WaitstateCurrent_State=s2;Whens2=--Convertstateconvst='0';current_state=s3;Whens3=--WaitstateCurrent_State=s4;Whens4=--AD7822readstateAD7822RD='0';Current_State=s5;Whens5=--FIFOwritestateFIFOWR='0';Current_State=s6;Whens6=--EndFIFOwritestateFIFOWR='1';Current_State=s7;Whens7=--EndstateAD7822RD='1';Current_State=s0;Whenothers=Current_State=s0;Endcase;Endif;Endif;Endprocess;9主要程序清单6译码部分Chip_Select:Process(A)--ChipselectprocessBeginCaseAIs--c51rda15a14a13When0000|0001|0010|0011|1000|1001|1010|1011=Y=111110;--Y00000~7FFFHCY7c199When0100|0110=Y=111101;--Y18000+RDFIFO7200When0101|1101|0111|1111=Y=111011;--Y2A000selectkeyboardWhenothers=Y=111111;Endcase;Endprocess;Endrtl;102、任意波形信号发生器设计(1)设计任务介绍产生三角波、锯齿波、正弦波、脉冲信号等波形信号,频率范围1Hz~200kHz,步进1Hz。(2)基本工作原理采用FPGA+DA转换器方式实现。(3)FPGA任务通过查找波形表的方式,按设定频率进行扫描输出。包括键盘扫描、数码管显示、波形存储器、DA转换器控制和PLL等组成模块。(4)系统硬件电路介绍11主要程序清单1--实体声明部分--**************************************************--filename:DJ_SG--function:SignalgeneratorachievedbyEP1C3T144--author:Angch--creatdate:2010-7-19--lastmodify:2010-8-26--**************************************************Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITYDJ_SGisport(--SystemInterfaceSYS_RST:INstd_logic;--systemresetSYS_CLK:INstd_logic;--systemclock--16.8MHz--inputinterfaceKEY_IN:INstd_logic_vector(15downto0);SW_IN:INstd_logic_vector(7downto0);SIG_IN:INstd_logic;--displayinterfaceLED_OUT:OUTstd_logic_vector(15downto0);DIG_OUT:OUTstd_logic_vector(7downto0);BIT_OUT:OUTstd_logic_vector(9downto0);AB_SW:OUTstd_logic;--DAinterfaceCS_A:OUTstd_logic;RW_A:OUTstd_logic;DB_A:OUTstd_logic_vector(7downto0);CS_B:OUTstd_logic;RW_B:OUTstd_logic;DB_B:OUTstd_logic_vector(7downto0));ENDENTITY;12主要程序清单2--信号及元件声明ARCHITECTURErtlofDJ_SGis--clockaboutcomponentPLLISPORT(areset:INSTD_LOGIC:='0';inclk0:INSTD_LOGIC:='0';c0:OUTSTD_LOGIC;c1:OUTSTD_LOGIC;locked:OUTSTD_LOGIC);ENDcomponent;signalCLK0:std_logic;--100MHzsignalCLK1:std_logic;--20MHzsignalLocked:std_logic;--LockedoftheClocksignalCLK_S:std_logic;--ScanClock;signalCLK_S_10:std_logic;--ScanClock/10;signalEN_CLK_S:std_logic;--enableofthescanclock;signalCLK_1k:std_logic;--1kHzsignalCLK_10k:std_logic;--10kHzsignalCLK_100:std_logic;--100HzsignalCLK_500:std_logic;--500HzsignalCLK_10:std_logic;--10HzsignalCLK_1M:std_logic;--1MHz13主要程序清单3--元件声明部分--ROMofsinewaveof1000pointscomponentRM_sin1000ISPORT(address:INSTD_LOGIC_VECTOR(9DOWNTO0);clken:INSTD_LOGIC;clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDcomponent;--ROMofsanjiaowaveof1000pointscomponentRM_san1000ISPORT(address:INSTD_LOGIC_VECTOR(9DOWNTO0);clken:INSTD_LOGIC;clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDcomponent;--ROMofjuchiwaveof1000pointscomponentRM_ju1000ISPORT(address:INSTD_LOGIC_VECTOR(9DOWNTO0);clken:INSTD_LOGIC;clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDcomponent;14主要程序清单4--时钟分频部分-------------------------------------------------------------ClockDivideBlock-------------------------------------------------------