Jump to content

    

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

Share this post


Link to post
Share on other sites
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)

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