module decoder38(
input [2:0]code,
output reg[7:0]result
)
always@(*)
begin
case(code)
3'b000: result = 8'h01
3'b001: result = 8'h02
3'b010: result = 8'h04
3'b011: result = 8'h08
3'b100: result = 8'h10
3'b101: result = 8'h20
3'b110: result = 8'h40
3'b111: result = 8'h80
endcase
end
endmodule
module decoder38(
input [2:0]code,
output reg[7:0]result
)
always@(*)
begin
if(code[2])
if(code[1])
if(code[0])
result = 8'h80
else
result = 8'h40
else
if(code[0])
result = 8'h20
else
result = 8'h10
else
else
if(code[1])
if(code[0])
result = 8'h08
else
result = 8'h04
else
if(code[0])
result = 8'h02
else
result = 8'h01
else
end
endmodule
工作原理
使用Verilog描述硬件的基本设计单元是模块(module)。构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。模块被包含在关键字module、耐贺endmodule之内。实际的电路元件。Verilog中的模块类似C语言中的函数,它能够提供输入、输出昌衡派端口,可以实例调用其他模块,也可以被其他模块实例调用。模块中可以包括组合逻辑部分、过程时序部分。
以上内拦穗容参考:百度百科-Verilog HDL
这个是带使能端的3-8译码器,输出低电平有效!你可以参考一下!你可以留下联系方式,我雀歼把语言顷帆冲与仿真发给你!
library IEEE
use IEEE.std_logic_1164.all
entity ls138 is
port (
A : in std_logic_vector (2 downto 0)
S1,S2,S3 : in std_logic
Y : out std_logic_vector (7 downto 0)
)
end entity
architecture ls138_arch of ls138 is
signal s : std_logic_vector(2 downto 0)
begin
S <= S1&S2&S3
process(A, S)
begin
Y <= (others =>'1')
if S="100" then
case A is
when "000" =>Y <= "11111110"-- 0
when "001" =>Y <= "11111101"-- 1
when "010" =>Y <= "11111011"-- 2
when "011" =>Y <= "11110111"-- 3
when "100" =>Y <= "轿铅11101111"-- 4
when "101" =>Y <= "11011111"-- 5
when "110" =>Y <= "10111111"-- 6
when "111" =>Y <= "01111111"-- 7
when others =>NULL
end case
end if
end process
end architecture
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)