|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
这个简单的逻辑电路怎么用vhdl描述 |
作者:xyt大虾米 栏目:EDA技术 |
这个简单的逻辑电路怎么用vhdl描述,我怎么总觉得写得不对。谢谢,交流 谢谢 设计一个具有两个二进制输入(X和Y)和一个二进制输出(Z)的器件,当输入X由0变为1,输出Z为1并保持到Y发生变化,当X=1时Y的任何变化都会导致输出发生变化,如果输入X和Y同时发生变化,则输出未定义,下图为该器件的时序图。 |
2楼: | >>参与讨论 |
作者: xyt大虾米 于 2005/11/22 13:59:00 发布:
看起来简单写起来难 写了一些代码 不过都不行 这个电路看起来简单,但真写写总觉得有些问题, 望达人指教 |
3楼: | >>参与讨论 |
作者: ysong 于 2005/11/24 9:03:00 发布:
verilog不是软件 只想告诉你,verilog不是软件! |
4楼: | >>参与讨论 |
作者: liuchuangc 于 2005/11/24 16:39:00 发布:
是有难度! 你里面需要同时检测两个信号同时变化的情况,这个是困难的地方,不过可以想办法解决,另外,仿真的时候,也会有问题。 |
5楼: | >>参与讨论 |
作者: 雷风 于 2005/11/24 23:00:00 发布:
可以这样 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楼: | >>参与讨论 |
作者: 雷风 于 2005/11/24 23:03:00 发布:
说三点 1 我不会vhdl,希望你能看懂verilog 2 我没有仔细仿真 ,不保证没有bug 3 这个方式其实不好,建议专门加时钟clk做成时序逻辑 * - 本贴最后修改时间:2005-11-24 23:04:59 修改者:雷风 |
7楼: | >>参与讨论 |
作者: 新荣 于 2005/12/7 21:52:00 发布:
初学者 .请改正一下,有错误..谢谢 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 于 2005/12/9 9:58:00 发布:
楼上的写的乱七八槽,有这样描述的吗? 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楼: | >>参与讨论 |
作者: 新荣 于 2005/12/9 16:50:00 发布:
对不起 初学... 望大家包涵. 今天看了有关的语法书,了解了些 以后不会再写这种的了 不好意思. |
10楼: | >>参与讨论 |
作者: 雷风 于 2005/12/9 22:15:00 发布:
谁都有初学的时候 没关系的,慢慢来 |
11楼: | >>参与讨论 |
作者: lanndly 于 2005/12/9 23:17:00 发布:
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 于 2005/12/15 15:48:00 发布:
Z <= X AND (X XOR Y) 组合逻辑 |
13楼: | >>参与讨论 |
作者: oaipoaip 于 2005/12/15 17:08:00 发布:
组合逻辑肯定是无法实现的 |
14楼: | >>参与讨论 |
作者: liuasaa 于 2005/12/15 19:42:00 发布:
X 与(Y非) |
15楼: | >>参与讨论 |
作者: 雷风 于 2005/12/16 22:53:00 发布:
我的逻辑很简单啊 直接拿来改成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 于 2006/1/13 23:18:00 发布:
下面图中电路 和 访真图形 如果需要的话 可以插入一些buffer进行缓冲一下 |
|
|
Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号 |