MicroBlaze находится под сбросом
Я использую Atlys Spartan6 xc6slx45. У меня есть эти ошибки при запуске программы:
1. Check whether board is connected to the system properly.
2. In case of zynq board, check whether Digilent/Xilinx cable switch settings are correct.
3. If you are using Xilinx Platform cable USB, ensure that status LED is green.
MicroBlaze is under RESET. Check if the Reset input to MicroBlaze and its Bus Interfaces are connected properly
UNABLE to STOP MicroBlaze
Файл system.ucf:
# Generic Template
Net fpga_0_clk_1_sys_clk_pin TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz;
## Net fpga_0_clk_1_sys_clk_pin LOC=;
Net fpga_0_rst_1_sys_rst_pin TIG;
## Net fpga_0_rst_1_sys_rst_pin LOC=;
некоторые детали system.mhs:
PORT fpga_0_clk_1_sys_clk_pin = CLK_S, DIR = I, SIGIS = CLK, CLK_FREQ = 50000000
PORT fpga_0_rst_1_sys_rst_pin = sys_rst_s, DIR = I, SIGIS = RST, RST_POLARITY = 0
BEGIN clock_generator
PARAMETER INSTANCE = clock_generator_0
PARAMETER C_CLKIN_FREQ = 50000000
PARAMETER C_CLKOUT0_FREQ = 66666666
PARAMETER C_CLKOUT0_PHASE = 0
PARAMETER C_CLKOUT0_GROUP = NONE
PARAMETER C_CLKOUT0_BUF = TRUE
PARAMETER C_EXT_RESET_HIGH = 0
PARAMETER HW_VER = 4.03.a
PORT CLKIN = CLK_S
PORT CLKOUT0 = clk_66_6667MHz
PORT LOCKED = Dcm_all_locked
PORT RST = Debug_SYS_Rst
END
BEGIN proc_sys_reset
PARAMETER INSTANCE = proc_sys_reset_0
PARAMETER C_EXT_RESET_HIGH = 0
PARAMETER HW_VER = 3.00.a
PORT Slowest_sync_clk = clk_66_6667MHz
PORT Ext_Reset_In = sys_rst_s
PORT MB_Debug_Sys_Rst = Debug_SYS_Rst
PORT Dcm_locked = Dcm_all_locked
PORT MB_Reset = mb_reset
PORT Bus_Struct_Reset = sys_bus_reset
PORT Peripheral_Reset = sys_periph_reset
PORT Interconnect_aresetn = proc_sys_reset_0_Interconnect_aresetn_0
END
какое значение я должен выставить для сброса микроблаза.
2 ответа
У Digilent есть эталонный дизайн с использованием микроблэйза, который вы должны использовать
В противном случае ваш файл UCF не имеет ограничения местоположения. Какой пин часы? Какой сброс? Вы должны сказать инструмент!
С эталонным дизайном AC97 у вас все будет в порядке, если поместить их в UCF (и удалить все остальное):
Net fpga_0_clk_1_sys_clk_pin LOC = "L15" | IOSTANDARD = "LVCMOS33";
Net fpga_0_rst_1_sys_rst_pin LOC = "T15" | IOSTANDARD = "LVCMOS33" | TIG;
Net fpga_0_clk_1_sys_clk_pin TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz;
Вы должны заметить, что система microblaze ожидала частоту 50 МГц, в то время как у вас на плате 100 МГц, вы должны убедиться, что ваша система все еще в порядке с этим изменением. Вы также должны правильно настроить system.mhs.
Я столкнулся с той же проблемой. Поскольку проблема связана с RESET, нам следует проверить сигнал, подключенный кReset
контакт ядра MicroBlaze. Это изmb_reset
выходной контакт IP-адреса сброса системы процессора (это правильно). Начиная с этого ядра, сигнал сброса системы процессора должен быть напрямую подключен к входному сигналу. Но я случайно подключил его к выходному контакту MIG, отсюда и ошибка. Теперь я отключаюсьext_reset_in
отui_clk_sync_rst
и подключим его ко входуreset
, и проблема решена.
Xilinx часто вносит изменения, делая старый дизайн ошибочным в текущем инструменте проектирования. Когда я столкнулся с этой ошибкой, я использовал Vivado/Vitis 2022.2.2, поэтому не гарантирую, что мое решение будет работать в будущей версии Vivado/Vitis.
PS, еще один ответ говорит о часах. В современных инструментах проектирования синхронизация с MicroBlaze (Clk
) должно быть изui_clk
МИГ, вместо тактового сигнала прямого входаsys_clk_i
указанный в файле xdc (частота не соответствует указанной в ответе). Это относится и ко всем остальным IP-ядрам, добавляемым автоматически.