tear086 发表于 2010-3-11 09:58:05

神器X-HDL3:VHDL、Veilog互转,已测试,相当强悍

如题。
不用不知道,一用吓一跳。

点击此处下载 ourdev_537736.zip(文件大小:3.78M) (原文件名:X-HDL3.2.52.zip)
http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_537737.png
(原文件名:抓图-1.png)

1181zjf 发表于 2010-3-11 10:03:55

严重mark

wzavr 发表于 2010-3-11 10:10:47

m一下,用到时再下

asdasd 发表于 2010-3-11 10:12:43

转过来的正确不?

h2feo4 发表于 2010-3-11 10:17:46

关注

tear086 发表于 2010-3-11 10:20:39

回复【3楼】asdasd
转过来的正确不?
-----------------------------------------------------------------------

我把群里的18b20转过来正确
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1079713

beny 发表于 2010-3-11 10:25:09

软件我是早就有了,不过后来项目不用cpld了,就没有深入研究,没用上,mark一下

niba 发表于 2010-3-11 10:29:22

以后看VHDL的例程就方便了

bad_fpga 发表于 2010-3-11 10:36:02

MARK

jielove2003 发表于 2010-3-11 10:52:38

mark,以后学CPLD/FPGA会用到

zlei 发表于 2010-3-11 11:21:07

mark

2004353215 发表于 2010-3-11 12:17:18

留名

sailor0908 发表于 2010-3-11 12:33:29

mark

liitom 发表于 2010-3-11 13:22:26

mark

ideality0214 发表于 2010-3-11 13:53:20

mark

avrpicarm 发表于 2010-3-11 17:01:00

呵呵,支持

kingmacth 发表于 2010-3-11 17:04:43

做个标记说不定哪天用到!

watercat3 发表于 2010-3-11 17:07:39

复杂代码效果如何?

hy317 发表于 2010-3-11 17:08:56

mark

gwj221 发表于 2010-3-11 17:21:43

小设计用它基本上没有问题,大的设计可要掂量掂量哦!

redbat_228 发表于 2010-3-11 17:59:17

标记一下,收藏…

zl0801 发表于 2010-3-11 18:01:07

效率估计不会太高,不过有了它,最起码能让人踏实些,不至于看不懂另外一种语言

caozhu 发表于 2010-3-11 18:04:33

收藏了

shield 发表于 2010-3-11 18:06:08

以前用过

hisun 发表于 2010-3-11 19:23:24

先标记,等以后。

281229961 发表于 2010-3-12 10:09:34

NULL; 转换了就是begin 和end

minux 发表于 2010-3-12 10:22:28

用一个语言,能看懂另外一个语言是基本功啊……

wx2k 发表于 2010-3-12 10:37:09

记号

FlashNuk 发表于 2010-3-12 12:58:41

记号。

vermon 发表于 2010-3-12 13:20:09

记号!!

ep1c3 发表于 2010-3-12 13:38:46

最近楼主放的资料很多啊,顶

mcucow 发表于 2010-3-15 22:20:32

回复【楼主位】tear086 .COM缺氧
-----------------------------------------------------------------------

谢谢共享

guke 发表于 2010-3-16 15:45:01

Mark

zhao_123456 发表于 2010-3-16 19:12:18

Mark

a1z26 发表于 2010-3-16 20:11:45

Mark

yangyi 发表于 2010-3-16 20:28:10

不知转换后效果如何,总觉得不踏实.

ksniper 发表于 2010-3-16 20:40:06

MARK

ljt8015 发表于 2010-3-16 20:44:54

mark

ming076 发表于 2010-3-16 20:54:05

mark

guolinjie007 发表于 2010-3-16 20:54:56

必须顶~!

NJ8888 发表于 2010-3-16 21:16:31

我太笨,找了个VHD转不成功,代码是我六年前写的EPP接口500K的采集
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity controler is
port(clock:in std_logic;
   reset:in std_logic;
   inclk:buffer std_logic;
   --OE:buffer std_logic;--------------
   --SEL:buffer std_logic;-------------
   ndata:in std_logic;
   din:in std_logic_vector(7 downto 0);
   outclk:buffer std_logic;
   dout:out std_logic_vector(7 downto 0);
   ramwr:buffer std_logic;
   waitout:buffer std_logic;
   addressbus:out std_logic_vector(12 downto 0);
   ramoe:buffer std_logic);
end;

architecture work of controler is
signal count:std_logic_vector(4 downto 0);
signal sel: std_logic;
signal oe: std_logic;
signal wpointer:std_logic_vector(12 downto 0);
signal rpointer:std_logic_vector(12 downto 0);
signal ready:std_logic;
signal eppcount:std_logic_vector(1 downto 0);
begin
readdata:process(reset,clock,OUTCLK,RAMOE)
begin
if reset='1' then
count<="11101";
oe<='1';
--SEL<='0';
ramwr<='1';
ramoe<='1';
inclk<='0';
--sel<='1';
else
if rising_edge(clock) then
    if count="11101" then
      count<="00000";
      inclk<='1';
      RAMOE<='1';
      oe<='0';
    --sel<='1';
    else
      count<=count+1;
    end if;

   if count="11100" then
   oe<='0';
   RAMOE<='1';
   end if;

    if count="00000" then
      ramwr<='0';
    end if;

    if count="00001" then
      ramwr<='1';
      oe<='1';
      inclk<='0';
      RAMOE<='0';
    end if;
   
    IF COUNT>"00001" THEN
      IF RPOINTER=WPOINTER THEN
      OE<='0';
      --SEL<='1';
      RAMOE<='1';
      ELSE
      --IF COUNT/="11100" THEN
          --RAMOE<='0';????????????????????????????(要修)
      --END IF;
      END IF;
    END IF;
end if;
end if;
end process readdata;

outctrl:process(INCLK,din)
begin
--IF OE='0' THEN   
--if sel='0' AND INCLK='0' then
--    dout<="00000000";
--elsE
--    IF INCLK/='1' THEN
--      dout<=din;
--    END IF;
--END IF;
--ELSIF OE='1' THEN
--dout<="ZZZZZZZZ";
--end if;

if inclk='1' then
if din="00000000" then
    dout<="00000001";
else
    dout<=din;
end if;
else
if ramoe='1' then
    dout<="00000000";
else
    dout<="ZZZZZZZZ";
end if;
end if;

--if inclk='0' then
--if ramoe='0' then
--    dout<="ZZZZZZZZ";
--else
--    dout<="00000000";
--end if;
--end if;
end process outctrl;

waddress:process(ramwr,reset)
begin
if reset='1' then
wpointer<="0000000000000";
else
if rising_edge(ramwr) then
    wpointer<=wpointer+1;
end if;
end if;
end process waddress;

raddress:process(reset,outclk,ramoe)
begin
if reset='1' then
rpointer<="0000000000000";
else
if FALLING_edge(OUTCLK) then
    if ramoe='0' then
   rpointer<=rpointer+1;
    end if;
end if;
end if;
end process raddress;

addresscom:process(wpointer,rpointer)
begin
if wpointer=rpointer then
SEL<='0';
else
SEL<='1';
end if;
end process addresscom;

addressout:process(wpointer,rpointer,inclk)
begin
if inclk='1' then
addressbus<=wpointer;
else
addressbus<=rpointer;
end if;
end process addressout;

eppread:process(clock,ndata,inclk,eppcount)
begin
if inclk='0' then
if ndata='0' then
    if rising_edge(clock) then
      if ready='1' then
      if eppcount="00" then
          IF (COUNT>"00001" and count<"11100") THEN
            outclk<='1';
            eppcount<=eppcount+1;      
          END IF;
          end if;
      if eppcount="01" then
          outclk<='0';
          waitout<='1';
          eppcount<=eppcount+1;      
      end if;
      else
          ready<='1';
          eppcount<="00";
      end if;
      end if;
    else
    if ndata='1' then
      --if rising_edge(clock) then
      waitout<='0';
      ready<='0';
      --end if;
    end if;
end if;
end if;
end process eppread;


end work;

22seu_08 发表于 2010-3-17 16:18:10

mark!!!!!

msdy 发表于 2010-3-17 16:22:34

正是我想要的

jeremygg 发表于 2010-3-18 16:12:30

mark

tear086 发表于 2010-3-26 13:30:39

顶上去。

lostmj 发表于 2010-4-9 22:23:09

mark

worldwindhuu 发表于 2010-4-13 17:57:47

强悍!

281229961 发表于 2010-4-15 10:25:30

回复【楼主位】tear086 .COM 缺氧
-----------------------------------------------------------------------

转出来不能复制啊?

liuxuemin2010 发表于 2010-4-15 11:06:39

很神奇,用vhdl转Verilog提示错误,
解决办法是把VHDL文件先用Verilog-》VHDL一下,把输出的文件再VHDL-》Verilog就可以了。

china_kaka 发表于 2010-4-15 15:32:34

强悍!!!

liuxuemin2010 发表于 2010-4-15 23:00:15

回复【41楼】888888888888
-----------------------------------------------------------------------

可以啊
//////////////////////////////////////////////////////////////////////////////////////////////
//
// Verilog file generated by X-HDL - Revision 3.2.52Mar. 28, 2005
// Thu Apr 15 22:58:43 2010
//
//      Input file         : C:/Documents and Settings/Administrator/Desktop/qq.vhd
//      Design name      : controler
//      Author             :
//      Company            :
//
//      Description      :
//
//
//////////////////////////////////////////////////////////////////////////////////////////////
//
module controler (clock, reset, inclk, ndata, din, outclk, dout, ramwr, waitout, addressbus, ramoe);

   input clock;
   input reset;
   output inclk;
   reg inclk;
   input ndata;
   input din;
   output outclk;
   reg outclk;
   output dout;
   reg dout;
   output ramwr;
   reg ramwr;
   output waitout;
   reg waitout;
   output addressbus;
   reg addressbus;
   output ramoe;
   reg ramoe;

   reg count;
   reg sel;
   reg oe;
   reg wpointer;
   reg rpointer;
   reg ready;
   reg eppcount;

   always @(posedge reset or posedge clock)
   begin : readdata
      if (reset == 1'b1)
      begin
         count <= 5'b11101 ;
         oe <= 1'b1 ;
         ramwr <= 1'b1 ;
         ramoe <= 1'b1 ;
         inclk <= 1'b0 ;
      end
      else
      begin
         if (count == 5'b11101)
         begin
            count <= 5'b00000 ;
            inclk <= 1'b1 ;
            ramoe <= 1'b1 ;
            oe <= 1'b0 ;
         end
         else
         begin
            count <= count + 1 ;
         end
         if (count == 5'b11100)
         begin
            oe <= 1'b0 ;
            ramoe <= 1'b1 ;
         end
         if (count == 5'b00000)
         begin
            ramwr <= 1'b0 ;
         end
         if (count == 5'b00001)
         begin
            ramwr <= 1'b1 ;
            oe <= 1'b1 ;
            inclk <= 1'b0 ;
            ramoe <= 1'b0 ;
         end
         if (count > 5'b00001)
         begin
            if (rpointer == wpointer)
            begin
               oe <= 1'b0 ;
               ramoe <= 1'b1 ;
            end
            else
            begin
            end
         end
      end
   end

   always @(inclk or din)
   begin : outctrl
      if (inclk == 1'b1)
      begin
         if (din == 8'b00000000)
         begin
            dout <= 8'b00000001 ;
         end
         else
         begin
            dout <= din ;
         end
      end
      else
      begin
         if (ramoe == 1'b1)
         begin
            dout <= 8'b00000000 ;
         end
         else
         begin
            dout <= 8'bZZZZZZZZ ;
         end
      end
   end

   always @(posedge ramwr or posedge reset)
   begin : waddress
      if (reset == 1'b1)
      begin
         wpointer <= 13'b0000000000000 ;
      end
      else
      begin
         wpointer <= wpointer + 1 ;
      end
   end

   always @(posedge reset or negedge outclk or negedge ramoe)
   begin : raddress
      if (reset == 1'b1)
      begin
         rpointer <= 13'b0000000000000 ;
      end
      else
      begin
         if (ramoe == 1'b0)
         begin
            rpointer <= rpointer + 1 ;
         end
      end
   end

   always @(wpointer or rpointer)
   begin : addresscom
      if (wpointer == rpointer)
      begin
         sel <= 1'b0 ;
      end
      else
      begin
         sel <= 1'b1 ;
      end
   end

   always @(wpointer or rpointer or inclk)
   begin : addressout
      if (inclk == 1'b1)
      begin
         addressbus <= wpointer ;
      end
      else
      begin
         addressbus <= rpointer ;
      end
   end

   always @(clock or ndata or inclk or eppcount)
   begin : eppread
      if (inclk == 1'b0)
      begin
         if (ndata == 1'b0)
         begin
            if (ready == 1'b1)
            begin
               if (eppcount == 2'b00)
               begin
                  if (count > 5'b00001 & count < 5'b11100)
                  begin
                     outclk <= 1'b1 ;
                     eppcount <= eppcount + 1 ;
                  end
               end
               if (eppcount == 2'b01)
               begin
                  outclk <= 1'b0 ;
                  waitout <= 1'b1 ;
                  eppcount <= eppcount + 1 ;
               end
            end
            else
            begin
               ready <= 1'b1 ;
               eppcount <= 2'b00 ;
            end
         end
         else
         begin
            if (ndata == 1'b1)
            begin
               waitout <= 1'b0 ;
               ready <= 1'b0 ;
            end
         end
      end
   end
endmodule

rep_1984 发表于 2010-4-16 21:38:53

mark

cain.lee 发表于 2010-4-16 22:29:31

这东西好啊····以后看东西不用愁了···

barrie_xie 发表于 2010-4-19 00:48:20

mark

jie1368 发表于 2010-4-20 23:11:14

顶,顶,顶,顶

lqsoft 发表于 2010-4-20 23:24:45

MARK

edaworld 发表于 2010-5-4 09:44:02

马克

jd.warlock 发表于 2010-5-4 17:06:02

谢谢分享,先MARK

hongyancl 发表于 2010-5-4 17:39:58

回复【楼主位】tear086 .COM 缺氧
-----------------------------------------------------------------------

ddd

boy364100 发表于 2010-5-4 21:56:53

试试~~~

sunjie718 发表于 2010-5-14 23:33:30

回复【楼主位】tear086 .COM 缺氧
如题。
不用不知道,一用吓一跳。
点击此处下载(原文件名:x-hdl3.2.52.zip)


(原文件名:抓图-1.png)
引用图片
-----------------------------------------------------------------------

不用不知道,一用吓一跳。

kclc 发表于 2010-5-15 02:02:00

强力mark

hecat 发表于 2010-5-15 03:00:58

Mark!

xml2028 发表于 2010-5-15 16:40:21

mark

worldwindhuu 发表于 2010-5-19 10:01:00

我那个license不能用啊,没办法转换成文件,看的好辛苦,求助,license怎么注册啊,看我有没有注册错,求助楼主!

hit_dajun 发表于 2010-5-21 02:10:56

关注。。。

chys01 发表于 2010-5-21 07:09:10

标记

cjd_gy 发表于 2010-5-21 09:22:12

拿来试试看……

suipeng70 发表于 2010-5-21 09:34:09

version up 再放猛料
Verilog和VHDL互相转换工具(XHDL-4.0.36破解)
http://www.61eda.com/Soft/soft/zongh/201005/4974.html

luan_dahai 发表于 2010-6-17 22:29:49

mark 是必须的。

Crazy_Bingo 发表于 2010-6-17 22:48:56

张亚峰弟弟 这个有什么用啊真是的!!

llssr 发表于 2010-6-17 23:41:53

支持

andriy 发表于 2010-6-18 00:31:10

转出来的能直接用?

liangtao 发表于 2010-6-18 08:29:28

mark

roguebear1 发表于 2010-7-19 15:20:42

mark

jjj206 发表于 2010-7-19 18:12:26

后果很严重,工程师们很生气。

tear086 发表于 2010-7-19 19:09:29

那么多选项,约束越多,越靠谱;慢慢看,好好用。

nimopur 发表于 2010-7-19 20:21:18

正在学习中

real_sugar 发表于 2010-7-19 20:44:29

mark

justsun 发表于 2010-7-19 21:17:26

mark

wkman 发表于 2010-7-19 21:52:38

现在不懂。mark以后可能用到。。。

wxx116zh 发表于 2010-7-20 08:40:18

mark

jackmo 发表于 2010-7-21 10:42:16

mark

lbc___ 发表于 2010-7-21 11:05:58

回复【楼主位】tear086 .COM 缺氧
-----------------------------------------------------------------------

不错 不错 谢谢楼主

maqingbiao 发表于 2010-7-26 12:51:25

很好,一直都想找   但没找到谢了

edaworld 发表于 2010-7-26 14:07:24

严重mark

terminator1983 发表于 2010-7-26 15:22:15

不错,支持

wcabcd 发表于 2010-7-27 14:54:40

请问转换结果出来后不能复制或者保存文件怎么办?如下图:

http://cache.amobbs.com/bbs_upload782111/files_31/ourdev_571071.JPG
(原文件名:结果.JPG)

tear086 发表于 2010-7-27 16:10:10

回复【90楼】wcabcd
-----------------------------------------------------------------------

./bbs_upload/files_31/ourdev_571084.jpg
配置上面的选项。

eeko2005 发表于 2010-7-28 22:35:45

Mark

ts10606 发表于 2010-8-1 16:55:00

mark

bd2rae 发表于 2010-8-1 21:42:27

不错,先收下了,改天试试。

Prose 发表于 2010-8-28 10:52:48

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

lingaoxun 发表于 2010-8-28 11:09:18

cuikai12345 发表于 2010-8-28 11:15:58

mark mark

PXJ_520 发表于 2010-8-28 17:52:30

MARK

kyozc 发表于 2010-8-30 15:13:01

玩玩可以,真正实用恐怕还是跟不上吧。

cxlspp 发表于 2010-9-18 16:33:11

回复【54楼】barrie_xie
mark

-----------------------------------------------------------------------

日,还以为屏幕上落了个虫子,严重警告一次!!

haigerl 发表于 2010-9-18 17:41:50

mark

mcsky 发表于 2010-9-19 10:09:23

就 出错了,不知道是不是我没设置好
页: [1] 2 3
查看完整版本: 神器X-HDL3:VHDL、Veilog互转,已测试,相当强悍