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

c program in linux

Добрый день

есть базовый рабочий проект созданный по

https://bitlog.it/hardware/building-embedded-linux-for-the-terasic-de10-nano-and-other-cyclone-v-soc-fpgas/

решил усложнить, для возможности писать/читать несколько регистров

для этого я модифицировал верилог описание на

module custom_leds
(
input logic clk, // clock.clk
input logic reset, // reset.reset

// Memory mapped read/write slave interface
input logic [3:0] avs_s0_address, // avs_s0.address
input logic avs_s0_read, // avs_s0.read
input logic avs_s0_write, // avs_s0.write
output logic [31:0] avs_s0_readdata, // avs_s0.readdata
input logic [31:0] avs_s0_writedata, // avs_s0.writedata

// The LED outputs
output logic [7:0] leds
);

logic [31:0] reg0_data;
logic [31:0] reg1_data;
logic [31:0] reg2_data;

// Read operations performed on the Avalon-MM Slave interface
always_ff @ (posedge clk) begin
if (reset) begin
avs_s0_readdata <= 32'h00000000;
if (avs_s0_read) begin
case (avs_s0_address)
4'b0000 : avs_s0_readdata <= {24'b0, leds};
4'b0001 : avs_s0_readdata <= 32'h0000000F;
4'b0010 : avs_s0_readdata <= 32'h0000000C;
4'b0011 : avs_s0_readdata <= 32'hAAAAAAAA;
4'b0100 : avs_s0_readdata <= 32'h55555555;
4'b0101 : avs_s0_readdata <= reg0_data;
4'b0110 : avs_s0_readdata <= reg1_data;
default : avs_s0_readdata <= reg2_data;
endcase
end else begin
avs_s0_readdata <= 32'h00000000;
end
end
end
// Write operations performed on the Avalon-MM Slave interface
always_ff @ (posedge clk) begin
if (reset) begin
leds <= 8'h00;
reg0_data <= 32'h00000000;
reg1_data <= 32'h00000000;
reg2_data <= 32'h00000000;

end else if (avs_s0_write) begin
case (avs_s0_address)
4'b0000 : leds <= avs_s0_writedata;
4'b0001 : reg0_data <= avs_s0_writedata;
4'b0010 : reg1_data <= avs_s0_writedata;
default : reg2_data <= avs_s0_writedata;
endcase
end
end
endmodule // custom_leds 

сгенерровл заново h файл (вложение). Но как по адресу читать/писать для меня загадка - помогите кто знает пожалуйста

hps_custom.h

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


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

4 часа назад, Maverick_ сказал:

есть базовый рабочий проект созданный по

https://bitlog.it/hardware/building-embedded-linux-for-the-terasic-de10-nano-and-other-cyclone-v-soc-fpgas/

сгенерровл заново h файл (вложение). Но как по адресу читать/писать для меня загадка - помогите кто знает пожалуйста

hps_custom.h

по вашей ссылке есть step9 и step10

первый пример обращается к железу из юзерспейса, второй в виде модуля ядра, т.е. как минимум по начальному адресу читать/писать должно. я не владею верилогом, но обычно к следующим регистрам доступ будет через baseaddr + offset (где offset кратен 4)

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


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

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

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

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

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

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

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

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

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

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