Announcement
Collapse
No announcement yet.
PCB Stack Impedance issue
Collapse
X
-
I am not sure. I do not use latest MFG tools. I use this: http://www.imx6rex.com/open-rex/soft...setup-mfgtool/
-
i got the pcb.
Now, i have trouble while debug it. I used Mfg tool from NXP.
when i upload uboot into kit, i received error about initializing memory. Below is MFG log and config. Pls, give me some advice in this case.
MFG log
Code:DLL version: 2.6.2 Friday, June 30, 2017 10:22:44 Start new logging ModuleID[2] LevelID[10]: CMyExceptionHandler thread is running ModuleID[2] LevelID[1]: new MxHidDeviceClass ModuleID[2] LevelID[10]: new MxHidDevice[04718FB8] ModuleID[2] LevelID[1]: new MxHidDeviceClass ModuleID[2] LevelID[10]: new MxHidDevice[04719488] ModuleID[2] LevelID[1]: new MxHidDeviceClass ModuleID[2] LevelID[10]: new MxHidDevice[047BF6D8] ModuleID[2] LevelID[1]: new MxHidDeviceClass ModuleID[2] LevelID[10]: new MxHidDevice[04819050] ModuleID[2] LevelID[1]: new MxHidDeviceClass ModuleID[2] LevelID[10]: new MxHidDevice[04842A38] ModuleID[2] LevelID[1]: new MxHidDeviceClass ModuleID[2] LevelID[10]: new MxHidDevice[0483D730] ModuleID[2] LevelID[10]: Device Manager thread is running ModuleID[2] LevelID[1]: Can't set m_hStopEvent before it initialized or it already stop ModuleID[2] LevelID[10]: CmdOperation[0] device chagned and reset to state 0 ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f. ModuleID[2] LevelID[1]: Failed to initialize memory! ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f. ModuleID[2] LevelID[1]: Failed to initialize memory! ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f. ModuleID[2] LevelID[1]: Failed to initialize memory! ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is C:\Users\Huypq6\Downloads\L4.1.15_1.0.0_ga-mfg-tools.tar\L4.1.15-1.0.0_ga-mfg-tools\mfgtools\Profiles\Linux\OS Firmware\firmware\u-boot-imx6ul14x14ddr3arm2_sd.imx ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x1f. ModuleID[2] LevelID[1]: Failed to initialize memory! ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent) ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - DEVICE_REMOVAL_EVT(\\?\USB#VID_15A2&PID_007D#6&106a4439&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}) ModuleID[2] LevelID[10]: DeviceManager::DevChangeWnd::OnDeviceChange() - end ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT(\\?\USB#VID_15A2&PID_007D#6&106a4439&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}) ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, _devices.size: 1 ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, devInstPathToFind: USB\VID_15A2&PID_007D\6&106A4439&0&2, _deviceInstanceID: USB\VID_15A2&PID_007D\6&106A4439&0&2 ModuleID[2] LevelID[10]: DeviceClass::FindDeviceByUsbPath--DeviceListType_Current, Find the device ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT,[MxHidDeviceClass] vid_15a2&pid_007d, Hub:6-Port:2 ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - DEVICE_REMOVAL_EVT, Notify ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, Volume Arrive/Remove or Device Arrive/Remove ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, m_p_usb_port is not NULL, so only refresh ModuleID[2] LevelID[10]: CmdOpreation[0]--OnDeviceChangeNotify, Volume/Device Remove ModuleID[2] LevelID[1]: CmdOpreation[0]--set m_hDeviceRemoveEvent. ModuleID[2] LevelID[10]: CmdOpreation[0]--WaitforEvents device remove1 ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent()-DEVICE_REMOVAL_EVT, hDevCanDeleteEvent has been set ModuleID[2] LevelID[10]: delete MxHidDevice[0483D730]
Code:[profiles] chip = Linux [platform] board = SabreSD[LIST] name = SDCard [variable] board = sabresd mmc = 0 sxuboot=sabresd sxdtb=sdb 7duboot=sabresd 7ddtb=sdb 6uluboot=14x14ddr3arm2 6uldtb=14x14-ddr3-arm2 ldo= plus= initramfs=fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.gz.u-boot seek = 1 sxnor=qspi2 7dnor=qspi1 6ulnor=qspi1 nor_part=0
Leave a comment:
-
6 layers could help. Be sure you know track geometry on top and bottom layer for all the impedances you need. Double check the stackup and impedances with your PCB manufacturer.
Leave a comment:
-
Thank you mairomaster and robertferanec,
Exactly, the reference layout is 4 layers. I checked reference layout and reference design and i did not find some decoupling capacitor such C101, C102. I guest that it was be removed.
This is my very first high speed design. So that i will try to route with 6 layers PCB. Base on robertferanec 's guide in his course, I define my PCB stack like attachment.
Do you have any comment for my further work?Last edited by huypq6; 03-30-2017, 08:33 PM.
Leave a comment:
-
I agree with mairomaster.
PS: This iMX6UL design confused a lot of people. If you would like to use POWER as a reference plane, be sure there are a lot of decoupling capacitors between the plane and GND and also be sure this plane is above all the memory tracks.
Leave a comment:
-
You definitely need impedance control on all layers where you are routing DDR3 signals. L4 will normally use the L3 power layer as a reference, so you should be having the same track parameters.
Despite the reference design for iMX6UL from NXP being done on 4 layers (if I remember correctly), this puts some limitations on what you can do on the board and will be quite challenging as well, if you don't have much experience designing such boards.
- Likes 1
Leave a comment:
-
PCB Stack Impedance issue
Hi there,
I am preparing to design an iMX6UL development kit.
My PCB stack is 4 layer.
L1 (signal)
L2 (GND)
L3 (POWER)
L4 (signal)
Should i have to control impedance on both of layer when routing DDR3? Assume that the track what has 50Ohm impedance in layer 1 is 0.12 mm width, but 0.12mm track is not 50Ohm impedance in layer 4. So that what will i have problem if i route 0.12mm track for DDR3 signal in layer 4?
Thank you for your help!Tags: None
Leave a comment: