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

Пользовательские IP в Qays

Здравствуйте. Изучаю как создавать свои собственные компоненты в Qsys и немного недопонимаю как обращаться к своим компонентам по интерфейсу Avalon через Nios

К примеру есть такой кусок кода описания компонента на Verilog

module my_comp
(
	input wire clk,
  	input wire reset,
  	input wire avalon_slave_write,
  	input wire [1 : 0] avalon_slave_address,
  
  	output reg [31 : 0] avalon_slave_readdata
);

reg a = 32'd10;
reg b = 32'd20;
reg c = 32'd30;
reg d = 32'd40;

always @(posedge clk) begin
	if (avalon_slave_write) begin
		case (avalon_slave_address)
  			2'b00: avalon_slave_readdata <= a;
  			2'b01: avalon_slave_readdata <= b;
  			2'b10: avalon_slave_readdata <= c;
  			2'b11: avalon_slave_readdata <= d;
		endcase
	end
end
endmodule

Чтобы считать эти данные с моего компонента использую макрос IORD_32DIRECT(MY_COMP_0_BASE, 0)

И тут я немного туплю, как правильно читать данные и задавать адрес (avalon_slave_address)  к какому регистру я обращаюсь?

И каким образом задавать строб avalon_slave_write? Читал спецификацию на этот авалон интерфейс так и не понял как он устанавливается

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так для чтения наверное avalon_slave_read нужен, адрес внутри устройства в IORD_32DIRECT вторым аргументом задаётся, то есть IORD_32DIRECT(MY_COMP_0_BASE, avalon_slave_address)

Изменено пользователем gridinp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 22.03.2020 в 10:24, Eskobar сказал:

Чтобы считать эти данные с моего компонента использую макрос IORD_32DIRECT(MY_COMP_0_BASE, 0)

И тут я немного туплю, как правильно читать данные и задавать адрес (avalon_slave_address)  к какому регистру я обращаюсь?

И каким образом задавать строб avalon_slave_write? Читал спецификацию на этот авалон интерфейс так и не понял как он устанавливается

Распределение адресного пространства передается в NIOS II SBT через sopc-файл. Смотрите файл system.h - там должны быть указаны все адреса периферии.

Если делать красиво, то для своего собственного периферийного устройства нужна написать HAL API (и забыть об обращениях по прямым адресам, сильно облегчив жизнь для написания приложения под ниос).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...