1、Altium教程FPGAHardwareD软件设计E0精FPGA Hardware_LED Chaser IO Module 软件设计第一部分 原理图1.1 FPGA_LED_Chasser_IO_Module.SchDoc VCCU3TCK TMS TDI TDO TRSTJT AG .JT AG JT AG JT AGJT AGJT AG.Q15.0D15.0L CE CCLR SLI LEFT SRI U4SR16CLEDB Q15.0D15.0L CE CCLR SLI LEFT SRI U5SR16CLEDB Q15.0D15.0L CE CCLR SLI LEFT SRI U7SR
2、16CLEDB Q15.0D15.0L CE CCLRSLI LEFT SRI U8SR16CLEDB Q15.0Q31.16Q63.48Q47.32D15.0D31.16D63.48D47.32VCCVCC VCC VCC Q16Q32Q48Q64Q15.0Q16.31Q48.63Q47.32Q71Q15Q31Q47 1 Ch x 8 Bit Digital IOAIN7.0AOUT7.0CTRL IOB_1X8A7.0A0A1D15.0D31.16D63.48D47.32A15.0B15.0Y15.0S0U9M16_B2B1A15.0B15.0Y15.0S0U10M16_B2B1A15.0
3、B15.0Y15.0S0U11M16_B2B1A15.0B15.0Y15.0S0U6M16_B2B1GNDGNDGNDA2U12OR3S LOADDIRMANUALQ7.0D7.0L CE CCLR SLI LEFT SRI U1SR8CLEDBQ71.64D71.64VCC Q0Q63GNDGNDGNDGNDGND D71.64A7.0B7.0Y7.0S0U2M8_B2B1GNDDIVN. = 1000000C D QU19FDU17C D QU18FDVCC SHIFTGNDVCCDigital I/O LED ChaserU13U14/ NCNTL31.0LOADU15CDIVN_32/
4、 5U16CDIV54 Ch x 16 Bit Digital IO AIN15.0BIN15.0CIN15.0DIN15.0AOUT15.0BOUT15.0COUT15.0DOUT15.0DIGIOIOB_4X16CLK_BRD PXXTEST_BUTTONPXX JTAG_NEXUS_TMSPXXJTAG_NEXUS_TCK PXX JTAG_NEXUS_TDO PXX JTAG_NEXUS_TDI PXX This example implements a 72 bit shift register to chase LEDs around a 4x16 Digital I/O modu
5、le.The speed is k ept down to 10Hz to allow the I/O module to k eep up.You will need to up the refresh speed on the I/O module to 100ms (Options button on the instrument.The 1x8 module controls extra functions.Bit 0 (toggle high the low will load the chaser with the settings entered into the 4x16.Th
6、e 4x16 inputs are used to display the state of the chaser - this is the display.The 4x16 output bits are used to control the value that will be loaded into the chaser when operating in Manual ModePower-On LoadHolds Load high for two shift clock cycles to force a load on startup.Relies on the fact th
7、at the DFFs will come up with zero loaded.Load from three sources.1. Startup Load2. Test button Load3. Toggle Bit 0 of CTRL from instrument display.1.2FPGA_LED_Chasser.PAS . Procedure UnRouteNet(Board : IPCB_Board; Net : IPCB_Net;VarIterator : IPCB_GroupIterator;Prim : IPCB_Prim;KillList : TList;i :
8、 Integer;BeginIterator := Net.GroupIterator_Create;Prim := Iterator.FirstPCBObject;KillList := TList.Create;While Prim NIl DoBeginIf Prim.IsFreePrimitive ThenKillList.Add(Prim;Prim := Iterator.NextPCBObject;End;For i := 0 TO KillList.Count - 1 DoBoard.RemovePCBObject(KillListi;KillList.Free;End; . P
9、rocedure UnrouteClass(Board : IPCB_BOARD; NetClass : IPCB_OBjectClass;VarIterator : IPCB_BoardIterator;net : IPCB_Net;BeginIterator := Board.BoardIterator_Create;Iterator.SetState_FilterAll;Iterator.AddFilter_ObjectSet(MkSet(eNetObject;Net := Iterator.FirstPCBObject;While Net NIl DoBeginIf NetClass.
10、IsMember(Net.Name ThenUnrouteNet(Board, Net;Net := Iterator.NextPCBObject;End;Board.ViewManager_FullUpdate;End; . Procedure UnRouteSelectedClasses(Board : I_PCBBoard;Vari : Integer;BeginFor i := 0 To GetNetClass.Classes.Items.Count - 1 DoIf GetNetClass.Classes.Selectedi ThenUnrouteClass(Board, GetNe
11、tClass.Classes.Items.Objectsi;End; . Function ChooseNetCLass(Dummy : Integer = 0 : Boolean;BeginResult := GetNetClass.showmodal = mrOK;End;. Procedure FillNetClassList(Board : IPCB_Board;VarIterator : IPCB_BoardIterator;c : IPCB_ObjectClass;BeginIterator := Board.BoardIterator_Create;Iterator.SetSta
12、te_FilterAll;Iterator.AddFilter_ObjectSet(MkSet(eClassObject;c := Iterator.FirstPCBObject;While c NIl DoBeginIf c.MemberKind = eClassMemberKind_Net ThenGetNetClass.Classes.Items.AddObject(c.Name, C;c := Iterator.NextPCBObject;End;End; . Procedure UnRouteNetClass;VarClassToUnroute : IPCB_OBjectClass;
13、Board : IPCB_Board;BeginPcbserver.PreProcess;TryBoard := PCBServer.GetCurrentPCBBoard;If Not Assigned(Board ThenBeginShowMessage(The Current Document is not a Protel PCB Document.;Exit;End;FillNetClassList(Board;If ChooseNetClass ThenUnrouteSelectedClasses(Board;FinallyPcbserver.PostProcess;End;End; . procedure TGetNetClass.ClassesDblClick(Sender: TObject;beginModalResult := mrOK;end;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1