Altium教程EB1EB2Tester2软件设计C1精.docx
《Altium教程EB1EB2Tester2软件设计C1精.docx》由会员分享,可在线阅读,更多相关《Altium教程EB1EB2Tester2软件设计C1精.docx(10页珍藏版)》请在冰豆网上搜索。
Altium教程EB1EB2Tester2软件设计C1精
EB1EB2Tester_2软件设计
第一部分原理图1.1Audio.SchDoc
CLKDataIn[7..0]
SoundOut
U_DeltaSigma8
DeltaSigma8.SCHDOC
Clock
DOUT[7..0]
Reset
U_SineWaveGenerator
SineWave.VHDAudioOut
DeltaSigmaClk
Reset
DIVIDERRATIO[15..0]
NOTEN[7..0]
Invalid
U_NoteDividerTableNoteDividerTable.Vhd
/N
CNTL[15..0]
LOAD
U1
CDIVN_16
GND
NoteN[7..0]U4
OR2S
I[15..0]OA[7..0]
OB[7..0]
U3
J16B_8B2
Vol[7..0]
A[7..0]B[7..0]P[15..0]
U2MULTU8B
--Entityname
--Created(31.08.04
--CreatedbyCh.W.
--Modified(date,bywhom
--Description
--TristateIOBuffer
LibraryIeee;
useieee.std_logic_1164.all;
entityaddTransis
port(
sel:
instd_logic;
inp:
instd_logic_vector(15downto0;
outp:
outstd_logic_vector(15downto0;
io:
inoutstd_logic_vector(15downto0
;
endentity;
architecturertlofaddTransis
begin
outp<=iowhensel='0'else(others=>'Z';
io<=inpwhensel='1'else(others=>'Z';endarchitecture;
{..............................................................................}
{Summary}
{ConvertsamonochromeimageasaPCBLogointoaseriesofthin}
{PCBtracksthatcanbeplacedonaPCBdocumentasalogo.}
{}
{Copyright(c2008byPurPerLimited}
{}
{Version1.5}
{}
{ChangesForVersion1.5}
{-FixoffbyoneerrorsaccessingCanvas.Pixels}
{-Makemoretolerantofnon-monochromeimages,nowtracksarecreatedat}
{theboundaryofwhiteandnon-whitepixels}
{-Useusercustomizedlayernames}{..............................................................................}
Var
gvBoard:
IPCB_Board;
{......................................................................................................................}ProcedureRunConverterScript;
Begin
ConverterForm.ShowModal;
End;{......................................................................................................................}
{......................................................................................................................}ProcedurePlaceATrack(ABoard:
IPCB_Board;X1,Y1,X2,Y2:
TCoord;ALayer:
TLayer,AWidth:
Float;
Var
PCBTrack:
IPCB_Track;
Sheet:
IPCB_Sheet;
OffSet:
TCoord;
Begin
//obtainthecoordinatesofthesheetsocanplacelogowithintheboard
Sheet:
=ABoard.PCBSheet;
OffSet:
=MilsToCoord(100;
//placeanewtrackontheblankPCB
PCBTrack:
=PCBServer.PCBObjectFactory(eTrackObject,eNoDimension,eCreate_Default;
PCBTrack.Width:
=Round(MilsToCoord(1*AWidth;
PCBTrack.X1:
=Sheet.SheetX+MilsToCoord(X1+Offset;
PCBTrack.Y1:
=Sheet.SheetY+MilsToCoord(Y1+Offset;
PCBTrack.X2:
=Sheet.SheetX+MilsToCoord(X2+Offset;
PCBTrack.Y2:
=Sheet.SheetY+MilsToCoord(Y2+Offset;
PCBTrack.Layer:
=ALayer;
ABoard.AddPCBObject(PCBTrack;
End;{......................................................................................................................}
{......................................................................................................................}
ProcedureScalingFactorChange(Dummy:
TObject;
Begin
ConverterForm.lImageSize.Caption:
=FloatToStr((ConverterForm.Image1.Picture.Width+1*ConverterForm.eScalingFactor.Text+'x'+FloatToStr((ConverterForm.Image1.Picture.Height+1*ConverterForm.eScalingFactor.Text+'mils';
End;{......................................................................................................................}
{......................................................................................................................}
ProcedureTConverterForm.eScalingFactorChange(Sender:
TObject;
Begin
ScalingFactorChange(Nil;
End;{......................................................................................................................}
{......................................................................................................................}ProcedureTConverterForm.loadbuttonClick(Sender:
TObject;
Var
I,J:
Integer;
Begin
IfOpenPictureDialog1.Executethen
Begin
XPProgressBar1.Position:
=0;
XStatusBar1.SimpleText:
='Loading...';
XStatusBar1.Update;
//loadingamonochromebitmaponly
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName;
//Checkifimageismonochrome,otherwisepromptawarning
IfImage1.Picture.Bitmap.PixelFormat<>pf1bitThen
Begin
ForJ:
=0toImage1.Picture.Height-1Do
ForI:
=0toImage1.Picture.Height-1Do
Begin
IfImage1.Canvas.Pixels[I,J]<>clWhiteThen
Image1.Canvas.Pixels[I,J]:
=clBlack;
End;
End;
ScalingFactorChange(Nil;
convertbutton.Enabled:
=True;
LoadButton.Enabled:
=False;
XStatusBar1.SimpleText:
='Ready...';
XStatusBar1.Update;
End;
End;{......................................................................................................................}
{......................................................................................................................}procedureTConverterForm.ConverterFormCreate(Sender:
TObject;
begin
//CreateastandaloneblankPCBdocumentandaddthenewlogotoit
//fromthePCBLogoContainerd.s.
CreateNewDocumentFromDocumentKind('PCB';
//GetCurrentPCBBoardreturnsaIPCB_Boardtype.
gvBoard:
=PCBServer.GetCurrentPCBBoard;
IfgvBoard=NilThen
Begin
ShowWarning('APCBdocumentisnotcreatedproperly.';
ShowModal:
=mrError;
End
Else
SetupComboBoxFromLayer(ComboBoxLayers,gvBoard;
end;{......................................................................................................................}
{......................................................................................................................}ProcedureTConverterForm.convertbuttonClick(Sender:
TObject;
x,y,x1,FlipY,FlipX:
Integer;
PixelColor:
TColor;
Start:
Boolean;
//PCBBoard:
IPCB_Board;
PCBLayer:
TLayer;
TrackWidth:
Integer;
Begin
Screen.Cursor:
=crHourGlass;
XPProgressBar1.Max:
=Image1.Picture.Height;
PCBLayer:
=GetLayerFromComboBox(ComboBoxLayers,gvBoard;
TrackWidth:
=StrToFloat(eScalingFactor.Text;
//ensurethelayerselectedisdisplayedinthePCBworkspacegvBoard.LayerIsDisplayed[PCBLayer]:
=True;
ForY:
=0toImage1.Picture.Height-1Do
Begin
XPProgressBar1.Position:
=Y;
XPProgressBar1.Update;
XStatusBar1.SimpleText:
='Converting...';
XStatusBar1.Update;
If(cbMirrorY.CheckedThen
FlipY:
=Y
Else
FlipY:
=Abs(Y-Image1.Picture.Height-1;
FlipY:
=FlipY*StrToFloat(eScalingFactor.Text;
//Denotesthestartofalineonarowofanimage
Start:
=False;
ForX:
=0ToImage1.Picture.WidthDo
Begin
If(cbNegative.CheckedThen
PixelColor:
=clBlack
Else
PixelColor:
=clWhite;
IfXPixelColor:
=Image1.Canvas.Pixels[x,y];
IfcbMirrorX.CheckedThen
FlipX:
=abs(X-Image1.Picture.Width
Else
FlipX:
=X;
FlipX:
=FlipX*StrToFloat(eScalingFactor.Text;
If(cbNegative.CheckedThen
Begin
CasePixelColorOf
clWhite:
IfNot(StartThen
Begin
x1:
=FlipX;
Start:
=True;
End;
Else
Begin
If(StartThen
PlaceATrack(gvBoard,X1,FlipY,FlipX,FlipY,PCBLayer,TrackWidth;
Start:
=False;
End;
End;
End
Else
Begin
CasePixelColorOf
clWhite:
Begin
If(StartThen
PlaceATrack(gvBoard,X1,FlipY,FlipX,FlipY,PCBLayer,TrackWidth;
Start:
=False;
End;
Else
IfNot(StartThen
Begin
x1:
=FlipX;
Start:
=True;
End;
End;
End;
End;
End;
Screen.Cursor:
=crArrow;
XStatusBar1.SimpleText:
='Done...';
XStatusBar1.Update;
//togglebuttons
ConvertButton.Enabled:
=False;
LoadButton.Enabled:
=True;
//clearoutprogressbar
XPProgressBar1.Position:
=0;
XPProgressBar1.Update;
//clearoutimage
Image1.Picture.Bitmap:
=nil;
Client.SendMessage('PCB:
Zoom','Action=All',255,Client.CurrentView;
End;{......................................................................................................................}
{......................................................................................................................}ProcedureTConverterForm.exitbuttonClick(Sender:
TObject;
Begin
Close;
End;{......................................................................................................................}