Reading BROM value
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am trying to read the value from the BROM which is generated using block memory generator IP in Vivado 2015.4. I initialize the value by using .coe file with given data. Below is my code for reading the value by increasing the address, but there is problem with the address which i cant get it right, because it has to be 0 for the first value as the initiation,does anyone knows how to deal with this problem, thank you very much.
`timescale 1 ns / 1 ps
module brom_tb();
reg clk;
reg en;
reg [15:0] addr;
wire [31:0] dout;
BROM_wrapper
uut(.BRAM_PORTA_addr(addr),.BRAM_PORTA_clk(clk),.BRAM_PORTA_dout(dout),
.BRAM_PORTA_en(en));
initial
begin
addr = 0;
clk = 1'b0;
en = 1'b1;
forever #4 clk=~clk;
end
always @(posedge clk)
begin
addr = addr + 1;
end
endmodule
This is my result
https://i.imgur.com/Xf13LPm.png
verilog fpga
add a comment |
I am trying to read the value from the BROM which is generated using block memory generator IP in Vivado 2015.4. I initialize the value by using .coe file with given data. Below is my code for reading the value by increasing the address, but there is problem with the address which i cant get it right, because it has to be 0 for the first value as the initiation,does anyone knows how to deal with this problem, thank you very much.
`timescale 1 ns / 1 ps
module brom_tb();
reg clk;
reg en;
reg [15:0] addr;
wire [31:0] dout;
BROM_wrapper
uut(.BRAM_PORTA_addr(addr),.BRAM_PORTA_clk(clk),.BRAM_PORTA_dout(dout),
.BRAM_PORTA_en(en));
initial
begin
addr = 0;
clk = 1'b0;
en = 1'b1;
forever #4 clk=~clk;
end
always @(posedge clk)
begin
addr = addr + 1;
end
endmodule
This is my result
https://i.imgur.com/Xf13LPm.png
verilog fpga
Your waveform shows the end (window range ~999.9975ns to 1ms), and your problem statement is about the initialization. We should be seeing the time window from 0 to 10ns. FYI sequential logic should be assigned with non-blocking assignment (<=
)
– Greg
Jan 4 at 17:46
Thank you very much for your answer, there's something that I want to ask, when I run the simulation, how can I adjust the time so that when I run all, it will automatically increase the address and read out the value, which starts from 0 and go through all the address in BROM without restarting the clk. When i run all, the address seems to be random without increasing order. Thank you very much again. Here is the result when I run all i.imgur.com/k38WG5Q.png
– Thịnh Nguyễn
Jan 5 at 4:43
add a comment |
I am trying to read the value from the BROM which is generated using block memory generator IP in Vivado 2015.4. I initialize the value by using .coe file with given data. Below is my code for reading the value by increasing the address, but there is problem with the address which i cant get it right, because it has to be 0 for the first value as the initiation,does anyone knows how to deal with this problem, thank you very much.
`timescale 1 ns / 1 ps
module brom_tb();
reg clk;
reg en;
reg [15:0] addr;
wire [31:0] dout;
BROM_wrapper
uut(.BRAM_PORTA_addr(addr),.BRAM_PORTA_clk(clk),.BRAM_PORTA_dout(dout),
.BRAM_PORTA_en(en));
initial
begin
addr = 0;
clk = 1'b0;
en = 1'b1;
forever #4 clk=~clk;
end
always @(posedge clk)
begin
addr = addr + 1;
end
endmodule
This is my result
https://i.imgur.com/Xf13LPm.png
verilog fpga
I am trying to read the value from the BROM which is generated using block memory generator IP in Vivado 2015.4. I initialize the value by using .coe file with given data. Below is my code for reading the value by increasing the address, but there is problem with the address which i cant get it right, because it has to be 0 for the first value as the initiation,does anyone knows how to deal with this problem, thank you very much.
`timescale 1 ns / 1 ps
module brom_tb();
reg clk;
reg en;
reg [15:0] addr;
wire [31:0] dout;
BROM_wrapper
uut(.BRAM_PORTA_addr(addr),.BRAM_PORTA_clk(clk),.BRAM_PORTA_dout(dout),
.BRAM_PORTA_en(en));
initial
begin
addr = 0;
clk = 1'b0;
en = 1'b1;
forever #4 clk=~clk;
end
always @(posedge clk)
begin
addr = addr + 1;
end
endmodule
This is my result
https://i.imgur.com/Xf13LPm.png
verilog fpga
verilog fpga
asked Jan 4 at 17:18
Thịnh NguyễnThịnh Nguyễn
11
11
Your waveform shows the end (window range ~999.9975ns to 1ms), and your problem statement is about the initialization. We should be seeing the time window from 0 to 10ns. FYI sequential logic should be assigned with non-blocking assignment (<=
)
– Greg
Jan 4 at 17:46
Thank you very much for your answer, there's something that I want to ask, when I run the simulation, how can I adjust the time so that when I run all, it will automatically increase the address and read out the value, which starts from 0 and go through all the address in BROM without restarting the clk. When i run all, the address seems to be random without increasing order. Thank you very much again. Here is the result when I run all i.imgur.com/k38WG5Q.png
– Thịnh Nguyễn
Jan 5 at 4:43
add a comment |
Your waveform shows the end (window range ~999.9975ns to 1ms), and your problem statement is about the initialization. We should be seeing the time window from 0 to 10ns. FYI sequential logic should be assigned with non-blocking assignment (<=
)
– Greg
Jan 4 at 17:46
Thank you very much for your answer, there's something that I want to ask, when I run the simulation, how can I adjust the time so that when I run all, it will automatically increase the address and read out the value, which starts from 0 and go through all the address in BROM without restarting the clk. When i run all, the address seems to be random without increasing order. Thank you very much again. Here is the result when I run all i.imgur.com/k38WG5Q.png
– Thịnh Nguyễn
Jan 5 at 4:43
Your waveform shows the end (window range ~999.9975ns to 1ms), and your problem statement is about the initialization. We should be seeing the time window from 0 to 10ns. FYI sequential logic should be assigned with non-blocking assignment (
<=
)– Greg
Jan 4 at 17:46
Your waveform shows the end (window range ~999.9975ns to 1ms), and your problem statement is about the initialization. We should be seeing the time window from 0 to 10ns. FYI sequential logic should be assigned with non-blocking assignment (
<=
)– Greg
Jan 4 at 17:46
Thank you very much for your answer, there's something that I want to ask, when I run the simulation, how can I adjust the time so that when I run all, it will automatically increase the address and read out the value, which starts from 0 and go through all the address in BROM without restarting the clk. When i run all, the address seems to be random without increasing order. Thank you very much again. Here is the result when I run all i.imgur.com/k38WG5Q.png
– Thịnh Nguyễn
Jan 5 at 4:43
Thank you very much for your answer, there's something that I want to ask, when I run the simulation, how can I adjust the time so that when I run all, it will automatically increase the address and read out the value, which starts from 0 and go through all the address in BROM without restarting the clk. When i run all, the address seems to be random without increasing order. Thank you very much again. Here is the result when I run all i.imgur.com/k38WG5Q.png
– Thịnh Nguyễn
Jan 5 at 4:43
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54043408%2freading-brom-value%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54043408%2freading-brom-value%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Your waveform shows the end (window range ~999.9975ns to 1ms), and your problem statement is about the initialization. We should be seeing the time window from 0 to 10ns. FYI sequential logic should be assigned with non-blocking assignment (
<=
)– Greg
Jan 4 at 17:46
Thank you very much for your answer, there's something that I want to ask, when I run the simulation, how can I adjust the time so that when I run all, it will automatically increase the address and read out the value, which starts from 0 and go through all the address in BROM without restarting the clk. When i run all, the address seems to be random without increasing order. Thank you very much again. Here is the result when I run all i.imgur.com/k38WG5Q.png
– Thịnh Nguyễn
Jan 5 at 4:43