所以我是FPGA的新手,我目前正在使用Altera DE-1板和Quartus II软件以及硬件项目.所以这是我的问题,我有一个.txt文件,其二进制图像数据为0和1,将这些数据加载到FPGA上的寄存器以进行进一步计算的最佳方法是什么.使用SDRAM?只读存储器?
我目前正在使用verilog进行编码并且之前使用过verilog文件I/O语句,但我在某处读到它显然不能用于合成.那么对我来说最好的方法是什么呢.任何建议都是受欢迎的.谢谢 :)
我正在尝试用 Verilog 编写一个顶级模块,每当传感器读取到低于特定数字的值时,该模块就会打开水阀。
这是我的代码:
module ProjectDSD(alteraClock, sensorInput, openValve);
input sensorInput, alteraClock;
output openValve;
always @(sensorInput)
begin
if(sensorInput < 100) //sensor value to irrigate at
begin
openValve <= 1; //here
end
else
begin
openValve <= 0; //here
end
end
endmodule
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
赋值左侧的对象“openValve”必须具有可变数据类型
我缺少什么?另外,我可以在 Altera DE2-155 板上使用哪些引脚来输出仅 1 和 0 的数字信号,以便阀门打开/关闭?
背景:ModelSim v10.4d与quartus v16.0一起安装
我是 Cadence Incisive 用户,现在必须转至导师 ModelSim,但使用 ModelSim,我无法找到一种方法来获取所有信号数据,然后再将它们添加到波形窗口。
例如,
在 .do(tcl) ModelSim 仿真脚本中,典型流程可能是:
1,vcom : compile all sources files and testbench
2,vsim : load testbench for simulation
3,view structure/signals/wave : open some windows
4,add wave : add signals to waveform window
5,run xx us : run simulation for a certain time
Run Code Online (Sandbox Code Playgroud)
通过此流程,每次向波形窗口添加信号时,我都必须重新执行步骤 5,否则它将显示新添加的信号“无数据”。
所以我想知道我们是否可以跳过步骤4,只执行步骤5一次以获得所有信号的模拟数据,然后我们选择信号发送到波形窗口,并且我们获得每个信号的数据而无需重新进行“运行”。
我试图减少我的vhdl代码中的逻辑元素的数量.我正在使用quartus II来编程Altera DE2 FPGA.有人可以就我如何做到这一点给出一些建议吗?
谢谢
我目前正在尝试使用VHDL设计交通灯控制器,我正在Altera EPM240T100C5上编程,带有用于显示交通信号灯的自定义扩展板.由于电路板上最慢的时钟设置仍然比我想要的快,我需要写一个时钟分频器,我这样做:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
entity clockdivider is
port
(
clkin : in std_logic;
dividedclk : out std_logic
);
end clockdivider;
architecture divider of clockdivider is
signal J : std_logic;
signal K : std_logic;
begin
J <= '1';
K <= '1';
process(clkin)
variable tempdividedclk : std_logic;
begin
if (rising_edge(clkin)) then
tempdividedclk := (NOT(tempdividedclk) AND J) OR (tempdividedclk AND (NOT(K)));
end if;
dividedclk <= '0';
dividedclk <= tempdividedclk;
end process;
END divider;
Run Code Online (Sandbox Code Playgroud)
这在主板上运行良好,但在模拟器(ModelSim)中,"divideclk"输出无法初始化为任何东西.我想知道是否有人知道为什么?
以下VHDL将用于测试工作台.在分析期间,我在第一个等待语句中一直出现错误:"wait语句必须包含带有UNTIL关键字的条件子句"我有几个以这种方式编写的工作测试平台.我似乎无法找到错误可能是什么.
`library IEEE;
USE IEEE.std_logic_1164.all;
entity case_ex_TB is end;
architecture simple_test of case_ex_TB is
--- DUT Component Declaration ---
component case_ex
port(
clk, rstN: IN std_logic;
color: OUT std_logic_vector(2 downto 0));
end component;
--- Signals Declaration ---
signal rst, clock: std_logic:='0';
signal color: std_logic_vector(2 downto 0);
begin
DUT: case_ex --- DUT instantiation ---
port map (clk => clock,
rstN => rst,
color => color);
--- Signal's Waves Creation ---
rst <= '1','0' after 50 ns, '1' after 2 us;
clock_crtate: …Run Code Online (Sandbox Code Playgroud) module do2(rst,clk,cout);
input rst,clk;
output [7:0]cout;
reg [2:0]D;
reg [19:0]count;
assign cout=out(D);
always@(posedge clk) begin
count = count+20'd1;
if(rst) begin
D<=3'b0;
end
else if(count==20'd100000)begin
D[0] <=D[1];
D[1] <=D[2];
D[2] <= D[0] ^D[2];
end
end
function [7:0]out;
input [2:0]in;
begin
case(in)
3'b000 : out =8'b11111100 ;
3'b001 : out =8'b01100000 ;
3'b010: out =8'b11011010 ;
3'b011 : out =8'b11110010 ;
3'b100 : out =8'b01100110 ;
3'b101 : out =8'b10110110 ;
3'b110 : out =8'b00111110 ;
3'b111 : out =8'b11100100 ;
endcase …Run Code Online (Sandbox Code Playgroud)