Перейти к содержанию

Vhdl Mux 4 В 1, 8 Bit


DI_m

Рекомендуемые сообщения

Здравствуйте! Перейду сразу к делу.

От меня потребовалось написать код VHDL для 8-ми битного мультиплексора 4 в 1.

Сам код написан:

library IEEE;
use IEEE.std_logic_1164.all;
entity mux is
port
(
x1, x2, x3, x4 : in std_logic;
clk :in std_logic_vector(8 downto 0);
out : out std_logic_vector(32 downto 0)
);
end mux;
architecture ttl of mux
begin
process clk
begin
if(clk(0)="0" and clk(1)="0") then out<=x1;
elsif(clk(0)="0" and clk(1)="1") then out<=x2;
elsif(clk(0)="1" and clk(1)="0") then out <=x3;
else out<=x4;
end if;
end process;
end ttl;

Хотелось бы услышать критику, замечания и пожелания, если таковые возникнут.

Указать на ошибки и, если возможно подсказать решения. Потому как в программировании я не силен.

За ранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Нет, мультиплексор это четыре восьмибитных входа и один восьмибитный выход. Какой из входных сигналов попадёт на выход определяется управляющим сигналом, в данном случае двухбитным.

Ссылка на комментарий
Поделиться на другие сайты

Большое спасибо!

Получилось следующее:

library IEEE;
use IEEE.std_logic_1164.all;
entity mux is
port
(
x1, x2, x3, x4 : in std_logic_vector(7 downto 0);
out_sel :in std_logic_vector(1 downto 0);
out : out std_logic_vector(7 downto 0)
);
end mux;
architecture ttl of mux
begin
process out_sel
begin
if(out_sel(0)="0" and out_sel(1)="0") then out<=x1;
elsif(out_sel(0)="0" and out_sel(1)="1") then out<=x2;
elsif(out_sel(0)="1" and out_sel(1)="0") then out <=x3;
else out<=x4;
end if;
end process;
end ttl;

Ссылка на комментарий
Поделиться на другие сайты

Как все сложно в VHDL :crazy:

Verilog HDL, один из вариантов...

module BCD_mux_4(
  input wire [1:0] select,
  input wire [3:0] in0,
  input wire [3:0] in1,
  input wire [3:0] in2,
  input wire [3:0] in3,
  output reg [3:0] out);

always @*
case (select)
  2'b00: out = in0;
  2'b01: out = in1;
  2'b10: out = in2;
  2'b11: out = in3;
endcase
endmodule

Изменено пользователем NebsteR

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

library ieee;
use ieee.std_logic_1164.all;
entity mux_cxem_net is
port(A,B,C,D:in std_logic_vector(7 downto 0);
 ADR:in std_logic_vector(1 downto 0);
Y:out std_logic_vector(7 downto 0));
end entity mux_cxem_net;
architecture body_1 of mux_cxem_net is
begin
Y<=A when ADR="00" else
 B when ADR="01" else
C when ADR="10" else
D when ADR="11" else
(others=>'X');
end architecture body_1;
architecture body_2 of mux_cxem_net is
begin
with ADR select
Y<=A when "00",
 B when "01",
C when "10",
D when others;
end architecture body_2;
architecture body_3 of mux_cxem_net is
begin
process(ADR,A,B,C,D)
begin
if ADR="00" then
 Y<=A;
elsif ADR="01" then
Y<=B;
elsif ADR="10" then
Y<=C;
else
Y<=D;
 end if;
end process;
end architecture body_3;
architecture body_4 of mux_cxem_net is
begin
process(ADR,A,B,C,D)
begin
case ADR is
 when "00" => Y <= A;
when "01" => Y <= B;
when "10" => Y <= C;
when others => Y <=D;
end case;
end process;
end architecture body_4;

все четыре архитектурных тела описывают одно и то же-- 8битный мультиплексор 4-1. используйте любое.

Ссылка на комментарий
Поделиться на другие сайты

Продолжим темку, хоть вопрос и не по vhdl, а по verilog...

Есть шина 256 бит, в которой каждые два бита - управление мультиплексором 4->1, которых 128... Как верилогу объяснить, что от него требуется 128 экземпляров подобных мультиплексоров?

...
input wire [255:0] in_sel;
integer i;

always @*
begin
  for (i=0; i<128; i=i+1)
  begin
  case (in_sel[i*2+1:i*2])
	 2'b00: ...
	 2'b01: ...
	 2'b10: ...
	 2'b11: ...
  endcase
  end
end

Вот такого он не понимает, ругается на то, что i - не константа...

Должно быть 128 мультиплексоров, у которых вход выбора - in_sel[1:0] у первого, in_sel[3:2] у второго и т.д. ... in_sel[255:254] у последнего...

Не писать же 128 раз одно и то же, только меняя биты в case?

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Очень просто. Вот так:

input wire [255:0] in_sel;
genvar i;

generate
for (i=0; i<128; i=i+1)
begin : MUX_4_TO_1
	always @*
	 case (in_sel[i*2+1:i*2])
			 2'b00: ...
			 2'b01: ...
			 2'b10: ...
			 2'b11: ...
	 endcase
end
endgenerate

То есть для этого есть специальная конструкция generate, именно для подобных случаев, когда требуется много однотипных частей, модулей. И, вроде бы, в таком случае обязательно надо задавать имя после begin.

Изменено пользователем Vascom
Ссылка на комментарий
Поделиться на другие сайты

Хм, ну-ка, попробуем... С generate я тоже пробовал, но оно ругалось, требовало end после (или вместо :) ) begin и endgenerate... Вероятно, именно имени ему и не хватало, щас проверим :)

Изменено пользователем NebsteR

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, отлично работает, занимает ожидаемое кол-во ресурсов и в RTL Viewer'е (Quartus II x64) выглядит тоже ожидаемо :)

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...