表决器

7人表决器的实现之路

放肆的年华 提交于 2020-03-08 02:41:32
感觉已经好久没有更新了(毕竟好久也没玩FPGA了,小声逼逼😂),手也有点生疏,各个软件的操作也有些忘记了。看来每天打开一下Quartus II, ModelSim, SignalTap II, UltraEdit 很有必要!(就算不用,也要打开一下熟悉界面嘛) 这次不是将具体原理的实现,而是记录一下遇到的问题(因为有些东西我也不是太清楚!) 首先我先给出仿真Test Bench文件(之后的遇到的问题基本与此无关),从里面的注释可以发现,还是遇到很多困难的,毕竟这个文件是自己一行一行敲的,肯定存在了一些问题! 下图是整个实验的思路导图! 一、唯一的一次成功情形 for语句中使用非阻塞赋值,在always块的结尾将sum清零! 可以发现:在112ns~116ns中,4ns经历了一次vote信号的变化(详请查看仿真文件),并且针对我们vote信号中"1"的个数给出相应的pass信号。 二、 这里,我们先将最后的sum清零注释掉,此时与书中(《自己动手写CPU》)的原始代码基本一致。问题是:我们的 i 恒为7,sum一直处于 未知态。 三、 基于 二 ,我们猜想可能是for循环中的初始赋值语句只执行一次。于是就将 i= 0; 置于for语句前面。 但依然没有什么用:我们的 i 恒为7,sum一直处于 未知态 四、 基于 二,我们将always块中的非阻塞赋值 全部替换成 阻塞赋值。

基于FPGA的多人表决器(VHDL)

一世执手 提交于 2019-12-12 13:02:13
七人表决器,外加按键,LED灯和数码管显示。 相应外设的功能: 按键:表决通过人数(注意按键一般是按下为0,设计程序是需要注意逻辑) LED:当4人以上通过即表示通过决议,LED灯亮。 数码管:显示通过的人数 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -------------------------------------------------------------------- entity biaojueqi is port( k1,K2,K3,K4,K5,K6,K7 : in std_logic; --输入:7个人 ledag : out std_logic_vector(6 downto 0); --数码管显示 m_Result : out std_logic --表决结果 ); end biaojueqi ; -------------------------------------------------------------------- architecture behave of biaojueqi is signal K_Num : std_logic_vector(2 downto 0

用VHDL语言编写7人表决器

你离开我真会死。 提交于 2019-12-03 15:03:58
7人表决器,即大于等于3个人同意,结果为成功。用逻辑0和1表示就是超过3个1为真用‘1’表示,不成功用‘0’表示。则其程序如下: library ieee; use ieee.std_logic_1164.all; entity qb7 is port( a:in std_logic_vector(6 downto 0); b:out std_logic ); end; architecture bhv of qb7 is begin process(a) variable Q :integer; begin Q:=0; for n in 0 to 6 loop if(a(n)='1') then Q:=Q+1; end if; end loop; if Q>=4 then b<='1'; else b<='0'; end if; end process; end bhv; 在程序中,输入端口a,它的数据类型标准矢量类型(按位矢量输出)std_logic_vector(6 downto 0);即a<="1101101"可以这样赋值。 输出端口b,它的数据类型标准逻辑型(包含bit'0'和'1')std_logic;对于输出的结果用'0'和'1'表示。 变量Q,它的数据类型是整形,因为Q是统计1的个数,故用整数类型替代。 七人表决器的原理图: 七人表决器的仿真图: 来源: https