hostmot2.vhd
来自「CNC 的开放码,EMC2 V2.2.8版」· VHDL 代码 · 共 1,538 行 · 第 1/4 页
VHD
1,538 行
PWMCRSel <= '1'; else PWMCRSel <= '0'; end if; if A(15 downto 8) = SPIDataAddr then -- SPI data register select SPIDataSel <= '1'; else SPIDataSel <= '0'; end if; if A(15 downto 8) = SPIBitCountAddr then -- SPI bit count register select SPIBitCountSel <= '1'; else SPIBitCountSel <= '0'; end if; if A(15 downto 8) = SPIBitrateAddr then -- SPI bit rate register select SPIBitrateSel <= '1'; else SPIBitrateSel <= '0'; end if; if A(15 downto 8) = BSPIDataAddr then -- BSPI data register select BSPIDataSel <= '1'; else BSPIDataSel <= '0'; end if; if A(15 downto 8) = BSPIFIFOCountAddr then -- BSPI FIFO count register select BSPIFIFOCountSel <= '1'; else BSPIFIFOCountSel <= '0'; end if; if A(15 downto 8) = BSPIDescriptorAddr then -- BSPI channel descriptor register select BSPIDescriptorSel <= '1'; else BSPIDescriptorSel <= '0'; end if; if A(15 downto 8) = UARTTDataAddr then -- UART TX data register select UARTTDataSel <= '1'; else UARTTDataSel <= '0'; end if; if A(15 downto 8) = UARTTFIFOCountAddr then -- UART TX FIFO count register select UARTTFIFOCountSel <= '1'; else UARTTFIFOCountSel <= '0'; end if; if A(15 downto 8) = UARTTBitrateAddr then -- UART TX bit rate register select UARTTBitrateSel <= '1'; else UARTTBitrateSel <= '0'; end if; if A(15 downto 8) = UARTTModeRegAddr then -- UART TX bit mode register select UARTTModeRegSel <= '1'; else UARTTModeRegSel <= '0'; end if; if A(15 downto 8) = UARTRDataAddr then -- UART RX data register select UARTRDataSel <= '1'; else UARTRDataSel <= '0'; end if; if A(15 downto 8) = UARTRFIFOCountAddr then -- UART RX FIFO count register select UARTRFIFOCountSel <= '1'; else UARTRFIFOCountSel <= '0'; end if; if A(15 downto 8) = UARTRBitrateAddr then -- UART RX bit rate register select UARTRBitrateSel <= '1'; else UARTRBitrateSel <= '0'; end if; if A(15 downto 8) = UARTRModeRegAddr then -- UART RX status register select UARTRModeRegSel <= '1'; else UARTRModeRegSel <= '0'; end if; if A(15 downto 8) = ReadIDAddr and Read = '1' then -- ReadID <= '1'; else ReadID <= '0'; end if; if A(15 downto 8) = WatchdogTimeAddr and Read = '1' then -- ReadWDTime <= '1'; else ReadWDTime <= '0'; end if; if A(15 downto 8) = WatchdogTimeAddr and Write = '1' then -- LoadWDTime <= '1'; else LoadWDTime <= '0'; end if; if A(15 downto 8) = WatchdogStatusAddr and Read = '1' then -- ReadWDStatus <= '1'; else ReadWDStatus <= '0'; end if; if A(15 downto 8) = WatchdogStatusAddr and Write = '1' then -- LoadWDStatus <= '1'; else LoadWDStatus <= '0'; end if; if A(15 downto 8) = WatchdogCookieAddr and Write = '1' then -- WDCookie <= '1'; else WDCookie <= '0'; end if; if A(15 downto 8) = IRQDivAddr and Write = '1' then -- LoadIRQDiv <= '1'; else LoadIRQDiv <= '0'; end if; if A(15 downto 8) = IRQDivAddr and Read = '1' then -- ReadIRQDiv <= '1'; else ReadIRQDiv <= '0'; end if; if A(15 downto 8) = IRQStatusAddr and Write = '1' then -- LoadIRQStatus <= '1'; else LoadIRQStatus <= '0'; end if; if A(15 downto 8) = IRQStatusAddr and Read = '1' then -- ReadIrqStatus <= '1'; else ReadIrqStatus <= '0'; end if; if A(15 downto 8) = ClearIRQAddr and Write = '1' then -- ClearIRQ <= '1'; else ClearIRQ <= '0'; end if; if A(15 downto 8) = StepGenBasicRateAddr and Write = '1' then -- LoadStepGenBasicRate <= '1'; else LoadStepGenBasicRate <= '0'; end if; if A(15 downto 8) = StepGenBasicRateAddr and Read = '1' then -- ReadStepGenBasicRate <= '1'; else ReadStepGenBasicRate <= '0'; end if; if A(15 downto 8) = TSDivAddr and Write = '1' then -- LoadTSDiv <= '1'; else LoadTSDiv <= '0'; end if; if A(15 downto 8) = TSDivAddr and Read = '1' then -- ReadTSDiv <= '1'; else ReadTSDiv <= '0'; end if; if A(15 downto 8) = TSAddr and Read = '1' then -- ReadTS <= '1'; else ReadTS <= '0'; end if; if A(15 downto 8) = QCRateAddr and Write = '1' then -- LoadQCountRate <= '1'; else LoadQCountRate <= '0'; end if; if A(15 downto 8) = MuxedTSDivAddr and Write = '1' then -- LoadMuxedTSDiv <= '1'; else LoadMuxedTSDiv <= '0'; end if; if A(15 downto 8) = MuxedTSDivAddr and Read = '1' then -- ReadMuxedTSDiv <= '1'; else ReadMuxedTSDiv <= '0'; end if; if A(15 downto 8) = MuxedTSAddr and Read = '1' then -- ReadMuxedTS <= '1'; else ReadMuxedTS <= '0'; end if; if A(15 downto 8) = MuxedQCRateAddr and Write = '1' then -- LoadMuxedQCountRate <= '1'; else LoadMuxedQCountRate <= '0'; end if; if A(15 downto 8) = PWMRateAddr and Write = '1' then -- LoadPWMRate <= '1'; else LoadPWMRate <= '0'; end if; if A(15 downto 8) = PDMRateAddr and Write = '1' then -- LoadPDMRate <= '1'; else LoadPDMRate <= '0'; end if; if A(15 downto 8) = PWMEnasAddr and Write = '1' then -- LoadPWMEnas <= '1'; else LoadPWMEnas <= '0'; end if; if A(15 downto 8) = PWMEnasAddr and Read = '1' then -- ReadPWMEnas <= '1'; else ReadPWMEnas <= '0'; end if; if A(15 downto 8) = IDROMWEnAddr and Write = '1' then -- LoadIDROMWEn <= '1'; else LoadIDROMWEn <= '0'; end if; if A(15 downto 8) = IDROMWEnAddr and Read = '1' then -- ReadIDROMWEn <= '1'; else ReadIDROMWEn <= '0'; end if; if A(15 downto 8) = LEDAddr and Write = '1' then -- LoadLEDs <= '1'; else LoadLEDs <= '0'; end if; end process; PortDecode: process (A,Read,Write,PortSel, DDRSel, AltDataSrcSel, OpenDrainModeSel, OutputInvSel) begin LoadPortCMD <= OneOfNDecode(IOPorts,PortSel,Write,A(3 downto 2)); -- 4 max ReadPortCMD <= OneOfNDecode(IOPorts,PortSel,Read,A(3 downto 2)); LoadDDRCMD <= OneOfNDecode(IOPorts,DDRSel,Write,A(3 downto 2)); ReadDDRCMD <= OneOfNDecode(IOPorts,DDRSel,Read,A(3 downto 2)); LoadAltDataSrcCMD <= OneOfNDecode(IOPorts,AltDataSrcSel,Write,A(3 downto 2)); LoadOpenDrainModeCMD <= OneOfNDecode(IOPorts,OpenDrainModeSel,Write,A(3 downto 2)); LoadOutputInvCMD <= OneOfNDecode(IOPorts,OutputInvSel,Write,A(3 downto 2)); end process PortDecode; StepGenDecode: if (STEPGENs > 0) generate StepGenDecodeProcess : process (A,Read,write,StepGenRateSel, StepGenAccumSel, StepGenModeSel, StepGenDSUTimeSel, StepGenDHLDTimeSel, StepGenPulseATimeSel, StepGenPulseITimeSel, StepGenTableSel, StepGenTableMaxSel) begin LoadStepGenRate <= OneOfNDecode(STEPGENs,StepGenRateSel,Write,A(6 downto 2)); -- 32 max ReadStepGenRate <= OneOfNDecode(STEPGENs,StepGenRateSel,Read,A(6 downto 2)); LoadStepGenAccum <= OneOfNDecode(STEPGENs,StepGenAccumSel,Write,A(6 downto 2)); ReadStepGenAccum <= OneOfNDecode(STEPGENs,StepGenAccumSel,Read,A(6 downto 2)); LoadStepGenMode <= OneOfNDecode(STEPGENs,StepGenModeSel,Write,A(6 downto 2)); ReadStepGenMode <= OneOfNDecode(STEPGENs,StepGenModeSel,Read,A(6 downto 2)); LoadStepGenDSUTime <= OneOfNDecode(STEPGENs,StepGenDSUTimeSel,Write,A(6 downto 2)); ReadStepGenDSUTime <= OneOfNDecode(STEPGENs,StepGenDSUTimeSel,Read,A(6 downto 2)); LoadStepGenDHLDTime <= OneOfNDecode(STEPGENs,StepGenDHLDTimeSel,Write,A(6 downto 2)); ReadStepGenDHLDTime <= OneOfNDecode(STEPGENs,StepGenDHLDTimeSel,Read,A(6 downto 2)); LoadStepGenPulseATime <= OneOfNDecode(STEPGENs,StepGenPulseATimeSel,Write,A(6 downto 2)); ReadStepGenPulseATime <= OneOfNDecode(STEPGENs,StepGenPulseATimeSel,Read,A(6 downto 2)); LoadStepGenPulseITime <= OneOfNDecode(STEPGENs,StepGenPulseITimeSel,Write,A(6 downto 2)); ReadStepGenPulseITime <= OneOfNDecode(STEPGENs,StepGenPulseITimeSel,Read,A(6 downto 2)); LoadStepGenTable <= OneOfNDecode(STEPGENs,StepGenTableSel,Write,A(6 downto 2)); ReadStepGenTable <= OneOfNDecode(STEPGENs,StepGenTableSel,Read,A(6 downto 2)); LoadStepGenTableMax <= OneOfNDecode(STEPGENs,StepGenTableMaxSel,Write,A(6 downto 2)); ReadStepGenTableMax <= OneOfNDecode(STEPGENs,StepGenTableMaxSel,Read,A(6 downto 2)); end process StepGenDecodeProcess; end generate; QCounterDecode: if (QCounters > 0) generate QCounterDecodeProcess : process (A,Read,write,QCounterSel, QCounterCCRSel) begin LoadQCounter <= OneOfNDecode(QCounters,QCounterSel,Write,A(6 downto 2)); -- 32 max ReadQCounter <= OneOfNDecode(QCounters,QCounterSel,Read,A(6 downto 2)); LoadQCounterCCR <= OneOfNDecode(QCounters,QCounterCCRSel,Write,A(6 downto 2)); ReadQCounterCCR <= OneOfNDecode(QCounters,QCounterCCRSel,Read,A(6 downto 2)); end process QCounterDecodeProcess; end generate; MuxedQCounterDecode: if (MuxedQcounters > 0) generate MuxedQCounterDecodeProcess : process (A,Read,write,MuxedQCounterSel, MuxedQCounterCCRSel) begin LoadMuxedQCounter <= OneOfNDecode(MuxedQCounters,MuxedQCounterSel,Write,A(6 downto 2)); -- 32 max ReadMuxedQCounter <= OneOfNDecode(MuxedQCounters,MuxedQCounterSel,Read,A(6 downto 2)); LoadMuxedQCounterCCR <= OneOfNDecode(MuxedQCounters,MuxedQCounterCCRSel,Write,A(6 downto 2)); ReadMuxedQCounterCCR <= OneOfNDecode(MuxedQCounters,MuxedQCounterCCRSel,Read,A(6 downto 2)); end process MuxedQCounterDecodeProcess; end generate; PWMDecode: if (PWMGENs > 0) generate PWMDecodeProcess : process (A,Read,write,PWMValSel, PWMCRSel) begin LoadPWMVal <= OneOfNDecode(PWMGENs,PWMValSel,Write,A(6 downto 2)); -- 32 max LoadPWMCR <= OneOfNDecode(PWMGENs, PWMCRSel,Write,A(6 downto 2)); end process PWMDecodeProcess; end generate; SPIDecode: if (SPIs > 0) generate SPIDecodeProcess : process (A,Read,write,SPIDataSel,SPIBitCountSel,SPIBitRateSel) begin LoadSPIData <= OneOfNDecode(SPIs,SPIDataSel,Write,A(5 downto 2)); -- 16 max ReadSPIData <= OneOfNDecode(SPIs,SPIDataSel,Read,A(5 downto 2)); LoadSPIBitCount <= OneOfNDecode(SPIs,SPIBitCountSel,Write,A(5 downto 2)); ReadSPIBitCount <= OneOfNDecode(SPIs,SPIBitCountSel,Read,A(5 downto 2)); LoadSPIBitRate <= OneOfNDecode(SPIs,SPIBitRateSel,Write,A(5 downto 2)); ReadSPIBitRate <= OneOfNDecode(SPIs,SPIBitRateSel,Read,A(5 downto 2)); end process SPIDecodeProcess; end generate; BSPIDecode: if (BSPIs > 0) generate BSPIDecodeProcess : process (A,Read,write,BSPIDataSel,BSPIFIFOCountSel,BSPIDescriptorSel) begin LoadBSPIData <= OneOfNDecode(BSPIs,BSPIDataSel,Write,A(7 downto 6)); -- 4 max ReadBSPIData <= OneOfNDecode(BSPIs,BSPIDataSel,Read,A(7 downto 6)); LoadBSPIDescriptor<= OneOfNDecode(BSPIs,BSPIDescriptorSel,Write,A(5 downto 2)); ReadBSPIFIFOCOunt <= OneOfNDecode(BSPIs,BSPIFIFOCountSel,Read,A(5 downto 2)); ClearBSPIFIFO <= OneOfNDecode(BSPIs,BSPIFIFOCountSel,Write,A(5 downto 2)); end process BSPIDecodeProcess; end generate; UARTDecode: if (UARTs > 0) generate UARTDecodeProcess : process (A,Read,write,UARTTDataSel,UARTTBitRateSel,UARTTModeRegSel,UARTTFIFOCountSel, UARTRDataSel,UARTRBitRateSel,UARTRFIFOCountSel,UARTRModeRegSel) begin LoadUARTTData <= OneOfNDecode(UARTs,UARTTDataSel,Write,A(6 downto 4)); LoadUARTTBitRate <= OneOfNDecode(UARTs,UARTTBitRateSel,Write,A(4 downto 2)); ReadUARTTBitrate <= OneOfNDecode(UARTs,UARTTBitRateSel,Read,A(4 downto 2)); LoadUARTTModeReg <= OneOfNDecode(UARTs,UARTTModeRegSel,Write,A(4 downto 2)); ReadUARTTModeReg <= OneOfNDecode(UARTs,UARTTModeRegSel,Read,A(4 downto 2)); ClearUARTTFIFO <= OneOfNDecode(UARTs,UARTTFIFOCountSel,Write,A(4 downto 2)); ReadUARTTFIFOCount <= OneOfNDecode(UARTs,UARTTFIFOCountSel,Read,A(4 downto 2)); LoadUARTRData <= OneOfNDecode(UARTs,UARTRDataSel,Read,A(6 downto 4)); LoadUARTRBitRate <= OneOfNDecode(UARTs,UARTRBitRateSel,Write,A(4 downto 2)); ReadUARTRBitrate <= OneOfNDecode(UARTs,UARTRBitRateSel,Read,A(4 downto 2)); ClearUARTRFIFO <= OneOfNDecode(UARTs,UARTRFIFOCountSel,Write,A(4 downto 2)); ReadUARTRFIFOCount <= OneOfNDecode(UARTs,UARTRFIFOCountSel,Read,A(4 downto 2)); LoadUARTRModeReg <= OneOfNDecode(UARTs,UARTRModeRegSel,Write,A(4 downto 2)); ReadUARTRModeReg <= OneOfNDecode(UARTs,UARTRModeRegSel,Read,A(4 downto 2)); end process UARTDecodeProcess; end generate; dotieupint: if not UseIRQLogic generate tieupint : process(clklow) begin INT <= '1'; end process; end generate; end dataflow;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?