世俱杯 2025

登录 免费注册 世俱杯 2025 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

这个简单的逻辑电路怎么用vhdl描述

作者:xyt大虾米 栏目:EDA技术
这个简单的逻辑电路怎么用vhdl描述
这个简单的逻辑电路怎么用vhdl描述,我怎么总觉得写得不对。谢谢,交流

谢谢


设计一个具有两个二进制输入(X和Y)和一个二进制输出(Z)的器件,当输入X由0变为1,输出Z为1并保持到Y发生变化,当X=1时Y的任何变化都会导致输出发生变化,如果输入X和Y同时发生变化,则输出未定义,下图为该器件的时序图。

2楼: >>参与讨论
xyt大虾米
看起来简单写起来难
写了一些代码

不过都不行

这个电路看起来简单,但真写写总觉得有些问题,
望达人指教

3楼: >>参与讨论
ysong
verilog不是软件
只想告诉你,verilog不是软件!

4楼: >>参与讨论
liuchuangc
是有难度!
你里面需要同时检测两个信号同时变化的情况,这个是困难的地方,不过可以想办法解决,另外,仿真的时候,也会有问题。

5楼: >>参与讨论
雷风
可以这样
MODULE TEST
    (
        x,
        y,
        z
    );

    input    x;
    input    y;
    OUTPUT    z;
    reg        flag;
    wire     z;
    wire    z_reg;

always @( posedge x )
begin
         flag <= y;
end

assign z_reg = ( flag == 1 )? y:~y;
assign z = ( x == 1 )? z_reg:z;

endMODULE

6楼: >>参与讨论
雷风
说三点
1 我不会vhdl,希望你能看懂verilog
2 我没有仔细仿真 ,不保证没有bug
3 这个方式其实不好,建议专门加时钟clk做成时序逻辑

* - 本贴最后修改时间:2005-11-24 23:04:59 修改者:雷风

7楼: >>参与讨论
新荣
初学者 .请改正一下,有错误..谢谢
library ieee;
use ieee.std_logic_1164.all;
entity a11 is
    PORT(X,Y:in std_logic;
        Z:out std_logic);
end a11;
architecture a11_arch of a11 is
signal s:std_logic;
begin
    PROCESS(X,Y)
    variable d:std_logic;
    begin
        if(X'event and X='1')then
            Z<='1';
            d:='1';
        elsif(X='1' and((Y'event and Y='1')or(Y'event and Y='0')))then
            Z<=not d;
            d:=not d;            
        end if;
        if X='0'then
            Z<='0';
        end if;
    end PROCESS;
end a11_arch;

8楼: >>参与讨论
robin.luo
楼上的写的乱七八槽,有这样描述的吗?
if(X'event and X='1')then
            Z<='1';
            d:='1';
elsif(X='1' and((Y'event and Y='1')or(Y'event and Y='0')))then
            Z<=not d;
            d:=not d;            
end if;


9楼: >>参与讨论
新荣
对不起
初学...
望大家包涵.
今天看了有关的语法书,了解了些
以后不会再写这种的了
不好意思.

10楼: >>参与讨论
雷风
谁都有初学的时候
没关系的,慢慢来

11楼: >>参与讨论
lanndly
vhdl写的
library ieee;
use ieee.std_logic.1164.all;
use ieee.std_logic.unsigned.all;

entity TEST is
PORT(
    reset : in std_logic;
    x,y : in std_logic;
    z : out std_logic
    );
end TEST;

architecture TEST_arc of TEST is
    signal x_ch : std_logic;
    signal y_ch : std_logic;
begin
    PROCESS(reset)
    begin
        if reset='1' then
            z<='0';
            x<='0';
            y<='0';
        elsif clk'event and clk='1' then
             if x_ch='1' then
                if y_ch='0' then
                    z<='1';
                elsif y_ch='1' then
                    z<=not z;
                end if;
            elsif x_ch='0' then
                z<=not z;
            end if;
        end if;
    end PROCESS;
    
    PROCESS(y,clk)
    begin
        if reset='1' then
            y_ch<='0';
        elsif (clk'event and clk='1') then
            if ((y'event and y='1') or (y'event and y='0')) then
                y_ch<='1';
            else y_ch<='0';
            end if;
        end if;
    end PROCESS;
    
    PROCESS(x,clk)
    begin
        if reset='1' then
            x_ch<='0';
        elsif clk'event and clk='1' then
            if ((x'event and x='1') or (x'event and x='0')) then
                x_ch<='1';
            elsif x'active then
                x_ch<='0';
            end if;
        end if;
    end PROCESS;
end TEST_arc;


随便写了下,有错误,明天修改

12楼: >>参与讨论
zhang_2000
Z <= X AND (X XOR Y)  组合逻辑
 
13楼: >>参与讨论
oaipoaip
组合逻辑肯定是无法实现的
 
14楼: >>参与讨论
liuasaa
X 与(Y非)
 
15楼: >>参与讨论
雷风
我的逻辑很简单啊
直接拿来改成vhdl不就得了

MODULE TEST
    (
        x,y,z
    );

    input    x;
    input    y;
    OUTPUT    z;
    reg        flag;
    wire     z;
    wire    z_reg;

always @( posedge x )
begin
         flag <= y;
end

assign z_reg = ( flag == 1 )? y:~y;
assign z = ( x == 1 )? z_reg:z;

endMODULE


16楼: >>参与讨论
zhang_2000
下面图中电路 和 访真图形
如果需要的话  可以插入一些buffer进行缓冲一下

参与讨论
昵称:
讨论内容:
 
 
相关帖子
只有网表文件,能用Altera的FPGA验证吗?
哪位大虾有CPLD下载线的并口驱动程序,我用的是xp系统!
请问 max  EPM7128SLC84-15 多少钱一片
还差多少
请教:如何用非阻塞赋值??VERILOG


Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号