예제 #1
0
 public override IEnumerable <TAVerb> DoNothing()
 {
     yield return(Verb(ETVMode.Locked,
                       _brAltFlagP.Drive(SignalSource.Create <StdLogicVector>("0")),
                       _brAltFlagN.Drive(SignalSource.Create <StdLogicVector>("1")),
                       GetNilDriver()));
 }
예제 #2
0
            public IEnumerable <TAVerb> StelemFixA(ISignalSource <StdLogicVector> addr,
                                                   ISignalSource <StdLogicVector> data)
            {
                Contract.Requires(NeedWriteAccess);

                yield return(Verb(ETVMode.Locked,
                                  _wrEnI.Stick(StdLogic._1),
                                  _addrI.Drive(addr),
                                  _dataInI.Drive(data)));
            }
예제 #3
0
            public IEnumerable <TAVerb> LdelemFixA(ISignalSource <StdLogicVector> addr,
                                                   ISignalSink <StdLogicVector> data)
            {
                if (_wrEnI != null)
                {
                    // Memory used as RAM

                    yield return(Verb(ETVMode.Locked,
                                      _wrEnI.Stick(StdLogic._0),
                                      _addrI.Drive(addr),
                                      _dataInI.Stick(StdLogicVector._0s(_dataBits))));
                }
                else
                {
                    // Memory used as ROM

                    yield return(Verb(ETVMode.Locked, _addrI.Drive(addr)));
                }
                yield return(Verb(ETVMode.Shared,
                                  data.Comb.Connect(_dataOutI.AsSignalSource <StdLogicVector>())));
            }
예제 #4
0
            public IEnumerable <TAVerb> Write(ISignalSource <StdLogicVector> data)
            {
                var fref = _literal as FieldRef;

                if (fref != null)
                {
                    if (!fref.FieldDesc.IsWrittenInCurrentContext(Host.Context))
                    {
                        throw new InvalidOperationException("Field is marked as not being written");
                    }
                }

                yield return(Verb(ETVMode.Locked,
                                  _wrEnI.Stick(StdLogic._1),
                                  _dataInI.Drive(data)));
            }