Jump to content

    

Программно определить ошибку разводки

нашел ошибку в разводке: перепутаны 2 ноги шины данных контроллера

747b3e33f03e.png

на шине данных сидят мл данные RAM, FPGA и FLASH

сейчас работает, никаких проблем нет, на FPGA просто переименовали эти линии

как проект будет разрастаться - будут выскакивать ошибки, которых сейчас нет.

меня интересует какой нибудь простой тест, чтобы определить, что линии перепутаны

 

то нибудь подобное:

 

void test(void)
{
  static u32 data0 @ ".slowdata" = 0xa5a5a5a5; /* внешняя память*/
  static u32 data1 @ ".fastdata"; /* внутренняя память */
  
  data1 = data0;  
  for(int i = 0; i < 1000; i++) {
    data0 <<= 1;
    data1 <<= 1;
    *****

 

Share this post


Link to post
Share on other sites

Данные можно путать как угодно и оно всё равно будет работать. Само собой если обмен идёт только между двумя устройствами. 

Чтобы проверить нужен циклический сдвиг в устройстве. Т.е. пишет число -> устройство его сдвигает -> читаем число. Сверяем с тем что ожидалось. Так можно и замыкания между шинами находить и обрывы.

Edited by MegaVolt

Share this post


Link to post
Share on other sites

При контроле монтажа делал так:

Цикл по всем линиям

Фаза 1 - все линии в 0; Опрос. Сравнение.

Фаза 2 - тестируемая линия в 1, остальные -  в 0; Опрос. Сравнение.

Фаза 3 - тестируемая линия  в 0, остальные - в 1; Опрос. Сравнение.

Фаза 4 - все линии в 1; Опрос. Сравнение. Ну мало-ли чего.

Должно и в Вашем случае подойти.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this