Jump to content
    

Пользовательские 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? Читал спецификацию на этот авалон интерфейс так и не понял как он устанавливается

 

 

Share this post


Link to post
Share on other sites

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

Edited by gridinp

Share this post


Link to post
Share on other sites

В 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 (и забыть об обращениях по прямым адресам, сильно облегчив жизнь для написания приложения под ниос).

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...