写的VHDL柜台设计帮助

T

TERRYWU3

Guest
亲爱的专家,

我想设计一个计数器
, 将取决于输入8位总线。

如果巴士“10011010”,我的计数器顺序为1 - “3 - ”4 - “7 - ”1 - “3 - ”4 - “7环。

如果巴士“10000001”,反序列为0 - “7 - ”0 - “7 ...循环

我的车是随机的变化。

请你给我一个建议或参考信息??非常非常感谢了!
最后由TERRYWU3编辑于07年4月20日16点36分,编辑1次共

 
您好

这是输入值10011010在柜台开始清楚地告诉我......

 
嗨,

以下是代码:

信号计数器,next_counter:整数范围0至7;

进程(时钟,重置)
开始
如果(复位= '0'),那么
反“= 1;
elsif(clk'event和CLK = '1'),那么
反“= next_counter;
如果结束;
结束进程;

进程(计数器,巴士)
开始
如果(巴士=“1001.101万”)
如果(反= 1),然后
next_counter“= 3;
elsif(反= 3),那么
next_counter“= 4;
elsif(反= 4),则
next_counter“= 7;
其他的
next_counter“= 1;
如果结束;
如果结束;
结束进程;如果这不是您想要的,plz免费张贴详细乌拉圭回合问题

检查语法时,我没有编译的代码。

关心,
dcreddy

 
nandhika说:

您好这是输入值10011010在柜台开始清楚地告诉我......
 
其实,你描述的是一序,而不是一个计数器,其中序列是由输入向量决定。下面你会发现一些代码可以帮助你做你的需要。您也可以尝试添加另一国家,因此,如果输入=“00000000”,在密克罗尼西亚去到一个无效的状态。检查语法,因为我没有在我的电脑在这个时候一个可用的编译器。
您将需要完成国家12,3,4,5,6和7中的代码。

图书馆电机及电子学工程师联合会;
使用ieee.std_logic_1164.all;
使用ieee.std_logic_unsigned.all;
使用ieee.std_logic_arith.all;

实体count_at_input是
端口(
时钟:在锁相环; -时钟
rst:在锁相环; -异步复位
以下各条:在std_logic_vector(7 downto 0); -序列
问:出std_logic_vector(2 downto 0) -输出(计数)
);
结束count_at_input;架构count_at_input计数器
信号血流量,每晚:std_logic_vector(2 downto 0); -当前和今后一个国家
开始
组合:过程(以下各条,量化参数)
开始
案件血流量是
当“000”=“ -如果达成,是1位0
如果(以下各条(1)= '1'),然后-如果位1 = 1,那么未来数= 1
Qn的“=”001“;
elsif(以下各条(2)= '1'),然后-否则
, 如果bit2 = 1,那么未来数= 2
Qn的“=”010“;
elsif(以下各条(3)= '1'),然后-否则
, 如果bit3 = 1,未来数= 3
Qn的“=”011“;
elsif(以下各条(4)= '1'),然后-否则
, 如果bit4 = 1,未来数= 4
Qn的“=”100“;
elsif(以下各条(5)= '1'),然后-否则
, 如果bit5 = 1,未来数= 5
Qn的“=”101“;
elsif(以下各条(6)= '1'),然后-否则
, 如果bit6 = 1,未来数= 6
Qn的“=”110“;
elsif(以下各条(7)= '1'),然后-否则
, 如果bit7 = 1,未来数= 7
Qn的“=”111“;
其他-如果所有其他位是0,留在这儿
Qn的“=”000“; -或者可以Qn的”=血流量;
如果结束;

当“001”=“ -如果达成,位1 = 1
如果(以下各条(2)= '1'),然后-否则
, 如果bit2 = 1,那么未来数= 2
Qn的“=”010“;
elsif(以下各条(3)= '1'),然后-否则
, 如果bit3 = 1,未来数= 3
Qn的“=”011“;
elsif(以下各条(4)= '1'),然后-否则
, 如果bit4 = 1,未来数= 4
Qn的“=”100“;
elsif(以下各条(5)= '1'),然后-否则
, 如果bit5 = 1,未来数= 5
Qn的“=”101“;
elsif(以下各条(6)= '1'),然后-否则
, 如果bit6 = 1,未来数= 6
Qn的“=”110“;
elsif(以下各条(7)= '1'),然后-否则
, 如果bit7 = 1,未来数= 7
Qn的“=”111“;
如果(以下各条(0)= '1'),然后-如果位0 = 1,那么未来数= 0
Qn的“=”000“;
其他-没有其他位都设置
Qn的“=”001“; -或者可以Qn的”=血流量;
如果结束;

当“010”=“ -这里把类似的代码
当“011”=“ -这里把类似的代码
当“100”=“ -这里把类似的代码
当“101”=“ -这里把类似的代码
当“110”=“ -这里把类似的代码
当别人=“ -把国有7类似代码
结束案件;

Q“=血流量; -输出是目前状态(计数)

结束进程的组合;

顺序:过程(时钟时,RST,以下各条)
开始
如果(RST = '1'),那么
如果(以下各条(0)= '1'),那么
量化“=”000“;
elsif(以下各条(1)= '1'),那么
量化“=”001“;
elsif(以下各条(2)= '1'),那么
量化“=”010“;
elsif(以下各条(3)= '1'),那么
量化“=”011“;
elsif(以下各条(4)= '1'),那么
量化“=”100“;
elsif(以下各条(5)= '1'),那么
量化“=”101“;
elsif(以下各条(6)= '1'),那么
量化“=”110“;
elsif(以下各条(7)= '1'),那么
量化“=”111“;
其他-如果没有输入位被设置
量化“=”000“; -默认数= 0
如果结束;

elsif(clk'event和CLK = '1'),那么
量化“= Qn的; -在上升沿,转变阶段
如果结束;

结束进程的顺序;

结束计数器;

 
这里是又一种方式...该代码在Verilog的..希望你能转化为VHDL语言吧!
代码:

模块seq_counter(

/ /输出

计数,

/ /输入

时钟,reset_n,以下各条

);

输入时钟,reset_n;

输入[7:0]以下各条;

输出[2:0]计数;

第[2:0]计数;

第[7:0] seq_r;

第[7:0]面具,mask_nx;

线材[7:0] mask_and_seq =面具&seq_r;

第[7:0] check_zero;

线零=〜|(check_zero);

开始总是@(posedge时钟或negedge reset_n)

如果(!reset_n)开始

seq_r“= 8'hff;

面具“= 8'hff;

否则开始结束

seq_r“=以下各条;

面具“= mask_nx;

末端

末端总是@(/ *如* /计数或面罩或seq_r或零)开始

mask_nx =面具;

如果(零)

mask_nx = seq_r;

其他的

案(计数)

0:mask_nx [0] = 1'b0;

1:mask_nx [1] = 1'b0;

2:mask_nx [2] = 1'b0;

3:mask_nx [3] = 1'b0;

4:mask_nx [4] = 1'b0;

5:mask_nx [5] = 1'b0;

6:mask_nx [6] = 1'b0;

7:mask_nx [7] = 1'b0;

endcase / /案(计数)

末端总是@(/ *如* / mask_and_seq)开始

如果(mask_and_seq [0])

计数= 0;

否则,如果(mask_and_seq [1])

计数= 1;

否则,如果(mask_and_seq [2])

计数= 2;

否则,如果(mask_and_seq [3])

数= 3;

否则,如果(mask_and_seq [4])

数= 4;

否则,如果(mask_and_seq [5])

数= 5;

否则,如果(mask_and_seq [6])

数= 6;

否则,如果(mask_and_seq [7])

数= 7;

其他的

计数= 0;

为此/ /总是@(...总是@(/ *如* /计数或seq_r)开始

check_zero = seq_r;

案(计数)

0:check_zero = seq_r“”1;

1:check_zero = seq_r“”2;

2:check_zero = seq_r“”3;

3:check_zero = seq_r“”4;

4:check_zero = seq_r“”5;

5:check_zero = seq_r“”6;

6:check_zero = seq_r“”7;

7:check_zero = seq_r“”8;

endcase

末端

endmodule / / seq_counter
 
嗨!
ü首先采取比较与价值
, 这些价值巴士与其回合计数器开始
, 这应该做比较时
, 乌拉圭回合公车逾值。如果在总线的价值是相等的值,然后开始回合计数器。所有这些可以做使用进程的声明

plz纠正我
, 如果我错了

感谢和问候
迪帕克

 

Welcome to EDABoard.com

Sponsor

Back
Top