运用VHDL设计1个模为24的8421BCD码加法计数器
来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/10/03 06:29:16
运用VHDL设计1个模为24的8421BCD码加法计数器
奉献一个原创的
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.ALL;
ENTITY bcd_cnt_1r0 IS
GENERIC(num_bit :INTEGER := 2;
modulo :INTEGER := 24);
PORT(clk :IN STD_LOGIC;
rst :IN STD_LOGIC;
cnt_en :IN STD_LOGIC;
bcd_out :OUT STD_LOGIC_VECTOR(num_bit * 4 - 1 DOWNTO 0));
END bcd_cnt_1r0;
ARCHITECTURE rtl OF bcd_cnt_1r0 IS
CONSTANT ONES :STD_LOGIC_VECTOR(num_bit DOWNTO 0) := (OTHERS=>'1');
FUNCTION dec2unsigned (dec_val:INTEGER; dec_bit :INTEGER) RETURN UNSIGNED IS
VARIABLE result:UNSIGNED(dec_bit*4 - 1 DOWNTO 0);
VARIABLE tmp :INTEGER := dec_val;
VARIABLE tmp2 :INTEGER := 0;
BEGIN
FOR i IN 1 TO dec_bit LOOP
tmp2 := (tmp/10);
result(i*4-1 DOWNTO (i-1)*4) := TO_UNSIGNED(tmp - tmp2 * 10,4);
tmp := tmp2;
END LOOP;
RETURN result;
END dec2unsigned;
CONSTANT unsign_modulo :UNSIGNED(num_bit * 4 - 1 DOWNTO 0) := dec2unsigned(modulo,num_bit);
SIGNAL next_cnt :UNSIGNED(num_bit * 4 - 1 DOWNTO 0) := (OTHERS=>'0');
SIGNAL curr_cnt :UNSIGNED(num_bit * 4 - 1 DOWNTO 0) := (OTHERS=>'0');
SIGNAL carray_in :STD_LOGIC_VECTOR(num_bit DOWNTO 0):=(OTHERS=>'0');
TYPE dec_array_type IS ARRAY(num_bit-1 DOWNTO 0) OF UNSIGNED(3 DOWNTO 0);
SIGNAL debug_dec_cnt_bit :dec_array_type :=(OTHERS=>(OTHERS=>'0'));
BEGIN
reg_proc:PROCESS(clk)
BEGIN
IF RISING_EDGE(clk) THEN
IF rst = '1' THEN
curr_cnt '0');
ELSE
IF cnt_en = '1' THEN
IF next_cnt = unsign_modulo THEN
curr_cnt '0');
ELSE
curr_cnt
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.ALL;
ENTITY bcd_cnt_1r0 IS
GENERIC(num_bit :INTEGER := 2;
modulo :INTEGER := 24);
PORT(clk :IN STD_LOGIC;
rst :IN STD_LOGIC;
cnt_en :IN STD_LOGIC;
bcd_out :OUT STD_LOGIC_VECTOR(num_bit * 4 - 1 DOWNTO 0));
END bcd_cnt_1r0;
ARCHITECTURE rtl OF bcd_cnt_1r0 IS
CONSTANT ONES :STD_LOGIC_VECTOR(num_bit DOWNTO 0) := (OTHERS=>'1');
FUNCTION dec2unsigned (dec_val:INTEGER; dec_bit :INTEGER) RETURN UNSIGNED IS
VARIABLE result:UNSIGNED(dec_bit*4 - 1 DOWNTO 0);
VARIABLE tmp :INTEGER := dec_val;
VARIABLE tmp2 :INTEGER := 0;
BEGIN
FOR i IN 1 TO dec_bit LOOP
tmp2 := (tmp/10);
result(i*4-1 DOWNTO (i-1)*4) := TO_UNSIGNED(tmp - tmp2 * 10,4);
tmp := tmp2;
END LOOP;
RETURN result;
END dec2unsigned;
CONSTANT unsign_modulo :UNSIGNED(num_bit * 4 - 1 DOWNTO 0) := dec2unsigned(modulo,num_bit);
SIGNAL next_cnt :UNSIGNED(num_bit * 4 - 1 DOWNTO 0) := (OTHERS=>'0');
SIGNAL curr_cnt :UNSIGNED(num_bit * 4 - 1 DOWNTO 0) := (OTHERS=>'0');
SIGNAL carray_in :STD_LOGIC_VECTOR(num_bit DOWNTO 0):=(OTHERS=>'0');
TYPE dec_array_type IS ARRAY(num_bit-1 DOWNTO 0) OF UNSIGNED(3 DOWNTO 0);
SIGNAL debug_dec_cnt_bit :dec_array_type :=(OTHERS=>(OTHERS=>'0'));
BEGIN
reg_proc:PROCESS(clk)
BEGIN
IF RISING_EDGE(clk) THEN
IF rst = '1' THEN
curr_cnt '0');
ELSE
IF cnt_en = '1' THEN
IF next_cnt = unsign_modulo THEN
curr_cnt '0');
ELSE
curr_cnt
用T触发器设计一个带进位标志的余3BCD码同步加法计数器.
FPGA 数电 如何用74160加法计数器 实现 模13BCD码计数器 模13BCD码计数器的真值表如图示
怎样用74161设计一个模十计数器(十进制加法计数器) ,来个电路图
一道数字电路题,用T触发器设计一个带进位标志的余3BCD码同步加法计数器,要求列出状态表,求出电路的驱动方程和输出方程.
用Verilog HDL设计一个4位BCD码计数器
用74161设计一个可变模的计数器.要求:当输入x=0时,电路为模8计数器;当输入x=1时,电路为模4计数器.计数时,不
设计计数器的基本原理
求:用与非门设计一个将8421BCD码转换为余3BCD码的组合逻辑电路
帮忙设计一些电路图第一个:利用数字电路技术设计一个数控稳压电源,采用计数器等芯片,电源的调节范围1~10V,步进值为1V
数字电路设计:试用数值比较器74HC85设计一个8421BCD码有效性测试电路,当输入为8421BCD码是,输出为1,否
用JK触发器和附加门电路设计一个七进制加法计数器,要解题的详细步骤,拜谢了
数字电子技术逻辑电路设计题,用74LS161设计一个模值为7的计数器,详情请看图