vhdl编程问题

--JJS.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JJS IS
PORT(CLKS,START,RES,TEST:IN STD_LOGIC;
IN1,IN2,IN3,IN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
LIGHT:OUT STD_LOGIC;
OUT1,OUT2,OUT3,OUT4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END;
ARCHITECTURE ONE OF JJS IS
SIGNAL Q1,Q2,Q3,Q4:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
PROCESS(START,CLKS,RES,TEST,Q4)
VARIABLE A:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
IF RES='0' OR TEST='0' THEN
Q1<="0000";Q2<="0000";Q3<="0000";Q4<="0000";
ELSIF Q4=(IN4-15) OR START='0' THEN A:="00";LIGHT<='0';
ELSIF START='1' THEN A:="11";LIGHT<='1';
CASE A IS
WHEN "11"=>IF CLKS'EVENT AND CLKS='1' THEN
IF(IN1-Q1)=0 THEN Q1<=(IN1-9);Q2<=Q2+1;
ELSE Q1<=Q1+1;
END IF;
IF(IN2-Q2)=0 AND (IN1-Q2)=0 THEN
Q3<=Q3+1;Q2<=(IN2-5);Q1<=(IN1-9);
END IF;
IF(IN3-Q3)=0 AND (IN2-Q2)=0 AND (IN1-Q1)=0 THEN
Q4<=Q4+1;Q3<=(IN3-9);Q2<=(IN2-5);Q1<=(IN1-9);
END IF;
IF(IN4-Q4)=0 AND (IN3-Q3)=0 AND (IN2-Q2)=0 AND (IN1-Q1)=0
THEN Q4<=(IN4-15);Q3<=(IN3-14);Q2<=(IN2-13);Q1<=(IN1-12);
END IF;
END IF;
WHEN OTHERS=>NULL;
END CASE;
END IF;
END PROCESS;
OUT1<=(IN1-Q1);
OUT2<=(IN2-Q2);
OUT3<=(IN3-Q3);
OUT4<=(IN4-Q4);
END;
提示第17行有错误
Error (10324): VHDL Expression error at JJS.vhd(18): expression ""0000"" has 4 elements ; expected 2 elements.

将SIGNAL Q1,Q2,Q3,Q4:STD_LOGIC_VECTOR(1 DOWNTO 0);改成SIGNAL Q1,Q2,Q3,Q4:STD_LOGIC_VECTOR(3 DOWNTO 0);吧,否则放不下4位逻辑向量。
温馨提示:内容为网友见解,仅供参考
无其他回答

VHDL代码出现near text "=>"; expecting ")", or ","错误,调用了库文件...
VHDL编程中遇到"near text "=>"; expecting ")", or ","错误,通常源于类型兼容性问题。对于bit类型,可以直接使用连接运算符,但std_logic类型则需要通过中间信号转换。例如,可以先创建一个中间信号t,如t := 0 && temp_node2(2) && temp_node2(1) && 0,然后在元件实例化中将Ain关联到这...

求懂的朋友帮个忙,VHDL程序出错,不知道怎么解决
4. 编译运行:修改完代码后,重新编译并运行程序。如果仍然出现错误,需要再次按照上述步骤进行检查和修改,直到程序正常运行。5. 寻求帮助:如果无法解决问题,可以向老师、同学或者相关技术人员寻求帮助。同时可以查阅相关资料和文档,了解更多关于VHDL程序设计和错误调试的知识。总之,对于VHDL程序出错的问题,...

用VHDL编程时总是出现这样的错误
以上是属于多时钟问题!在设计时往往会遇到这种情况,需要对外部某个输入信号进行判断,当其出现上跳或下跳沿时,执行相应的操作,而该信号不像正常时钟那样具有固定占空比和周期,而是很随机,需要程序设计判断其上跳沿出现与否。就会写出如上程序!解决的办法可以如下,将clk1和key2 增加一级状态 lcx ...

数字电路 VHDL 编程 状态机 状态转换图问题?
你没有说错,确实是只有四个状态。可能是题目的问题。a和b两个组合只可能有00 01 10 11这四个状态了。但是他有五个状态意思会不会是叫你设计的有自校正能力,你可以试试2'bxx这个状态,把这个加进去,在状态未知的时候始终矫正为初态,我觉得这也是一个解决办法。

verilog编程问题,找出一个数据中的第一个'1'
两分法,用按位或判断是否全零。例如结果5bit,若输入的高16bit全零,结果的最高位就置0,否则置1,依次两分。---附一个找高位的1的,低位类似 reg [31:0] data;reg [ 4:0] position;reg [15:0] sel1;reg [ 7:0] sel2;reg [ 3:0] sel3;reg [ 2:0] sel4;always @(*) be...

EDA的VHDL问题
mx的时候cnt_mx加上一个较小的随机数,这样等的变化速率就会减慢。随机数的产生用LSFR方法就可以 比如一个5位的随机数rnd,初始种子不为0 那么每个周期这样变rnd <= rnd(3 downto 0) & (rnd(0) xor rnd(3) xor rnd(4));rnd就是一个随机数 这样就可以了,所有难点扫除了。自己编程吧。

关于CPLD编程问题:使用VHDL语言编写程序,使外部过来的脉冲信号与芯片内...
我做过FPGA的相关verilog编写;这种情况下一般是用寄存器打拍,例如:always@(clk)begin reg1<= input;reg0<=reg1;end input经过两次clk打拍后,reg0就是与clk同步的信号 这是我的理解,希望能帮到你,有错误也请指正

关于vhdl顶层文件重复调用已设计好模块问题。 我想编写一个电子钟程序...
举个例子:对应的顶层文件:U3的输入不就是U2和U1的输出啊。推理,你的设计里面时钟(24进制计数器)的输入是分钟(60进制计数器)的输出,分钟计数器的输入是秒钟计数器的输出,秒钟计数器的输入是分频器秒脉冲模块的输出。如果再实在是弄不明白,建议你的顶层文件使用图形化编程,直接画电路连线就好了阿...

VHDL编程语言中遇到这样的表达方式,是什么意思啊?就是在1234前面的X表...
begin \/\/开始 x<=X“1234”; \/\/赋值x U0:clk7seg port map( \/\/按8段编码依次输出 x=>x, \/\/重新赋值

用VHDL语言对FPGA编程时,我用DDS的IP核产生一个14位的正弦信号sin_a...
亲,试试下面这个,假设sin_a是14位的二进制数,dds_sine_buma就是最终的 首先要定义个中间传递信号:signal sine_buma :std_logic_vector(13 downto 0);--bu ma 再定义个最终的补码信号:signal dds_sine_buma :std_logic_vector(13 downto 0);--bu ma sine_buma <=sin_a(13) &...

相似回答