Перейти к содержанию
    

TSURKOV

Участник
  • Постов

    38
  • Зарегистрирован

  • Посещение

Весь контент TSURKOV


  1. Здравствуйте не могли бы вы поделиться информацией по следующему вопросу. У меня процессорная плата pc104 работаю с ней под qnx4. Мне необходимо научится работать с ней через технологический ComPort (стандартная задача для встраиваемых систем). Я бы хотел иметь полный доступ к процессорной плате, насколько я понимаю, есть терминальные программы позволяющие через внешний компьютер управлять платой. Как они называются? где их можно достать? буду очень признателен за любую информацию по данному вопросу.
  2. Вроде установлены, посмотрите пожалуйста вот копия с экрана.
  3. Здравствуйте подскажите пожалуйста в чем может быть дело. Никак не могу заставить работать UART в NIOSII. Открываю документацию раздел UART CORE и вроде, ничего сложного нет, приведены примеры. #include <stdio.h> #include <string.h> int main() { char* msg = "Detected the character 't'.\n"; FILE* fp; char prompt = 0; fp = fopen ("/dev/uart1", "r+"); //Open file for reading and writing fwrite (msg, strlen (msg), 1, fp); } Компилятор выдает непонятную ошибку Unable to reach errno (at 0x00000820) from the global pointer (at 0x000091b4) because the offset (-35220) is out of the allowed range, -32678 to 32767.[/build/nios2/bin/nios2-gnutools/src/newlib/newlib/libc/reent/fstatr.c] blank_project_0
  4. У меня задействовано два конечных автомата, находящихся в двух раздельных модулях проекта. Эти автоматы должны работать с одной памятью, первый выполняет функции записи в память, второй чтения из нее (память двух портовая). Как описать память или где расположить код ее описания, чтобы к ней был возможен совместный доступ как их одного модуля (файла), так и из другого?
  5. ???????????????????????????????????????????????????????????????????????????????????????????????????? А как быть если в состоянии мне надо совершить только одно действие и затем перейти в другое (например изменение адреса)?В двух разных состояниях выдается два разных адреса?.. Так в чем тогда проблемы? Присваивайте в одном состоянии один адрес, по клоку переходите в другое состояние и выдавайте там новый адрес. ???????????????????????????????????????????????????????????????????????????????????????????????????? Спасибо что откликнулись. Как раз проблема в том, что если я изменяю адрес "adr = adr + 1", в цикле который работает не по клоку а по state регистру "always @ (state) ", адреса многократно меняются, вместо того чтобы один раз переключиться. На каждый конкретный адрес заводить состояние я не могу, слишком их много.
  6. В квартусе есть шаблоны автоматов. Как правильно описать автомат в контексте этого шаблона? Первый always цикл принято считать логикой переходов, второй логикой выходов, целиком с этим согласен так путаницы меньше. Меня смущает always цикл выходной логики главным образом то, что он чувствителен не к глобальным тактам синхронизации а к состоянию state регистра. Причем он реагирует не на изменение состояния, а на нахождение в нем. А как быть если в состоянии мне надо совершить только одно действие и затем перейти в другое (например изменение адреса)? Автомат пример которого я привел ведет себя адекватно только если второй цикл как и первый чувствителен к клокам. Но это не в концепции шаблона ! //////////////////////////////////////////////////////////////////////////////////////////////// parameter set = 1'h1, clr = 1'h0; parameter reset_state = 8'd0, wait_byte = 8'd1, read_byte = 8'd2, next_adr = 8'd3, check_adr = 8'd4, idle = 8'd5; reg [7:0] state; reg [7:0] adress_write; reg [7:0] buffer [255:0]; reg rd; always @ (posedge clk or negedge reset) begin if (!reset) state <= reset_state; else case (state) reset_state: if(reset == set) state <= wait_byte; wait_byte: if(rxf == clr) state <= read_byte; read_byte: state <= next_adr; next_adr: state <= check_adr; check_adr: begin if(adress_write < 8'd10) state <= wait_byte; else state <= idle; end idle: state <= idle; endcase end //******************************************************************************** **** always @ (state) begin case (state) reset_state: begin rd = set; adress_write = 8'h0; end wait_byte: if(rxf == clr) rd = clr; read_byte: begin buffer[adress_write] = data[7:0]; rd = set; end next_adr: adress_write = adress_write + 8'h1; endcase end
  7. Видел примеры инициализации ROM в книгах НАПРИМЕР $fread(“proga.dat”, mem[0]); ИЛИ readmemb(“proga.dat”, mem); Ни фига они не работают в квартусе. Удалось только создать LPM память в визарде там же ее проинициализировать файлом, и в верилог подключить как модуль. Тогда все ОК. Но я хотел все таки сам ее описать и загрузить как в примерах выше. Возможно ли это в квартусе ???
  8. Господа, подскажите пожалуйста, что означают опции в настройках <Analysis & Synthesis Settings> А именно State Machine Processing: - AUTO - MINIMAL BITS - ONE HOT - USER ENCODED У меня в проекте стояло AUTO и автомат то и дело глючил, поменял на MINIMAL BITS и картина резко изменилась в лучшую сторону почему?
  9. Господа, подскажите пожалуйста как на Verilog проинициализировать ПЗУ данными из файла. Заранее большое спасибо.
  10. Большое спасибо за ваши ответы на прошлый вопрос. Я только начал разбираться с Verilog и вопросов пока много ! Не могу удержаться и хочу спросить вас еще об одной вещи, с которой разбираюсь. Если вам не трудно поделиться своими знаниями и опытом, то еще раз большое спасибо. Я пытаюсь понять как правильней мне привязать некую последовательность действий к событию. Например по ISA я записываю в альтеру байт, который дальше мне надо сдвинуть по SPI. Я подумал что это можно сделать воспользвавшись конструкцией <task> Я подразумеваю что TASK выполняется параллельно начиная с момента вызова и до момента когда он выполнит все свои операторы (как обычная программа). Так ли это? Вызов своего task я планировал делать обработчике always в котором выполняется запись IO регистра, можно ли вызывать задачу на параллельное выполнение и при этом выйти из always? И правильно ли я мыслю решение такой задачи в целом, может ее лучше решать иначе? Если кто может поделиться исходниками примерами работы конструкций <task> буду очень рад. И еще раз большое спасибо всем !!!!
  11. Увжаемый Gate большое спасибо за ваш отзыв. Я раньше работал с альтерой в схемном режиме, но в душе больше программист поэтому решил заняться верилогом. В связи с этим пока много вопросов. По поводу Initial из ворниногов я понял что квартус его не поддерживает и выкидывает всю конструкцию. Может я не прав? или что-то надо установить? Квартус по описанию, что я приводил выше генерит тригер с еденицей на входе и clk на тактовом входе, отсюда ед на выходе. НО ПОЧЕМУ ????
  12. Господа подскажите пожалуйста почему не работат эта конструкция. В Quartus в симуляторе на тест сразу лог ед, а я ожидаю что он в начале в нуле потом десять раз проклокает и встанет в ед. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// reg test always @ (posedge clk) begin test = 0; repeat(10) @ (posedge clk) begin test = ~test; end test = 1; end ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Заранее большое спасибо !!!!
×
×
  • Создать...